我刚刚学习Python。提前道歉。将Delphi的BufferToHex函数转换为Python
我有一个创建字符串哈希的Delphi函数。它首先将字符串转换为ELF哈希(??),然后将其更改为十六进制数字。
我的第一部分在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的额外步骤完成将它转换为十六进制值
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混在一起时,我仍然得到不同的数字。
任何意见表示赞赏。谢谢。
你问到一个Delphi哈希函数转换为Python,但你有没有实际显示德尔福哈希功能。我们所有的就是你对功能的评估,它确定它是一个“精灵”散列。如果你遇到问题的部分是如何将缓冲区转换为十六进制,那么只需*询问*并将散列值留给它,因为它与以十六进制写入缓冲区无关。 – 2013-03-13 06:05:06
好吧,我纠正了标题,但留下了另一个函数,因为我试图展示什么会被传递到新函数中。谢谢 – user1232971 2013-03-13 06:23:16