我剛剛學習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