我只是在学习 Python。提前道歉。
我有一个创建字符串哈希的 Delphi 函数。它首先将字符串转换为 ELF Hash(??),然后将其更改为 HEX 数字。
我有第一部分在 Python 中工作
def ELFHash(key):
hash = 0
x = 0
for i in range(len(key)):
hash = (hash << 4) + ord(key[i])
x = hash & 0xF0000000
if x != 0:
hash ^= (x >> 24)
hash &= ~x
return hash
在 Delphi 中,完成了一个额外的步骤,将其转换为 Hex 值
function BufferToHex(const Buf; BufSize : Cardinal) : string;
var
I : LongInt;
begin
Result := '';
for I := 0 to BufSize - 1 do
Result := Result + IntToHex(TByteArray(Buf)[I], 2);
end;
buf 这里是我得到的精灵哈希,存储在 Delphi longint 中,然后 BufSize 是该 longint 的 Delphi sizeOf(),到目前为止似乎返回 4。
我将如何制作一个类似于 BufferToHex 的 Python 函数来返回等效输出?据我所知,python 类型不同并且不返回相同的字节大小(它似乎返回 16 而不是 4),当我弄乱 ctypes 的东西时,我仍然得到不同的数字。
任何建议表示赞赏。谢谢。