gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:35:27 25 4
gpt4 key购买 nike

所以我需要破解一个哈希来解决一个难题,我已经编辑了一个 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++ 更快,我有 indexToCharacter 函数、characterToIndex 函数,但我似乎无法让下一个函数工作。

我为 C++ 中的下一个函数得到了这个

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];
}

最佳答案

在这种特殊情况下,我不会一直为 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));

我只是打印出值,你可以做任何你需要做的事情......

关于python - 将 Python 函数转换为 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38401295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com