将Python函数转换为C++函数

2024-10-02 08:18:50 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我需要破解一个散列来解决一个难题,我编辑了一个Python程序,它迭代所有可能的组合,但是Python程序太慢了,因为散列每天都在变化,我知道它是一个长度为8的散列

python程序的工作方式如下:

charset = "abcdefghijklmnopqrstuvwxyz012345679"
NUMBER_OF_CHARACTERS = len(charset)
sequence = list("a a a a a a a a".split(" "))
while(True):
    current = "".join(sequence)
    sequence = next(sequence)
    #check if hash of sequence matches target hash

函数:“next”如下所示:

if len(string) <= 0:
    string.append(indexToCharacter(0))
else:
    string[0] = indexToCharacter((characterToIndex(string[0]) + 1) % NUMBER_OF_CHARACTERS)
    if characterToIndex(string[0]) is 0:
        return list(string[0]) + next(string[1:])
return string

indexToCharacter只返回索引(index)处字符串字符集中的字符
characterToIndex返回给定字符在字符串索引中的位置

因此,characterToIndex(“a”)将返回0,而indexToCharacter(0)将返回“a”

现在我需要的是,把这个Python程序转换成C++程序,因为C++的速度更快,我有索引字符函数,特性索引函数,但是我不能让下一个函数工作。你知道吗

我在C++ +/p>中得到下一个函数

string next(string sequence)
{
    sequence[0] = indexToCharacter(characterToIndex(sequence[0])+1);
    if (characterToIndex(sequence[0]) == 0)
    {
        //Something
    }
}

string sequence = "aaaaaaaa";
next(sequence);

indexToCharacter和characterToIndex的代码:

int characterToIndex(char character)
{
    return charset.find(character);
}

char indexToCharacter(unsigned index)
{
    return charset[index];
}

Tags: of函数程序numberstringindexreturnif
1条回答
网友
1楼 · 发布于 2024-10-02 08:18:50

在这种特殊情况下,我不会一直和std::string对象纠缠在一起。你有固定的长度,对吗?你可以这样做非常有效的(同时工作在C++和C.)。–只需根据自己的需要调整缓冲区长度和字符列表): 你知道吗

char characters[] = { 'a', 'b', 'c' };
char buffer[3];
char* positions[sizeof(buffer)];
for(unsigned int i = 0; i < sizeof(buffer); ++i)
{
    buffer[i] = *characters;
    positions[i] = characters;
}

unsigned int i;
do
{
    printf("%.*s\n", (int)sizeof(buffer), buffer);
    for(i = 0; i < sizeof(buffer); ++i)
    {
        ++positions[i];
        if(positions[i] < characters + sizeof(characters))
        {
            buffer[i] = *positions[i];
            break;
        }
        positions[i] = characters;
    }
}
while(i < sizeof(buffer));

我刚打印出来的值,你可以做任何你需要做的。。。你知道吗

相关问题 更多 >

    热门问题