我試圖從頭開始編寫Adler-32 哈希函數(shù)只是為了獲得一些樂趣,我已經(jīng)完成了它,除了每次對字符串進行哈希處理時它總是缺少前面的零這一事實。我已經(jīng)檢查了公式和 Adler-32 描述數(shù)十次,但我不明白為什么我的代碼會生成它。代碼如下。function toAdler32(str) { if (typeof str != "string") throw new Error('HashUtil: Data passed to Hash function was not of type String.'); let A16 = 1; let B16 = 0; for (let i = 0; i < str.length; i++) { A16 += (str.charCodeAt(i)) % 65521; B16 += A16 % 65521; } return ((B16 << 16) | A16).toString(16);}console.log(toAdler32('test'));// Returns `45d01c1` when it should return `045d01c1`.
為什么我的 Adler-32 哈希函數(shù)每次都會漏掉一個零?
繁星coding
2023-08-18 13:55:47