为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的 Adler-32 哈希函数每次都会漏掉一个零?

为什么我的 Adler-32 哈希函数每次都会漏掉一个零?

繁星coding 2023-08-18 13:55:47
我试图从头开始编写Adler-32 哈希函数只是为了获得一些乐趣,我已经完成了它,除了每次对字符串进行哈希处理时它总是缺少前面的零这一事实。我已经检查了公式和 Adler-32 描述数十次,但我不明白为什么我的代码会生成它。代码如下。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`.
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您需要用 0 填充它 - 它会删除前导 0,因为前导 0 在数字中毫无意义,无论基数 10 还是基数 16...

如果你有 100 张卡,你不会说你有 0100 张卡,因为你不需要前导 0。

查看完整回答
反对 回复 2023-08-18
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信