难以理解校验和算法

时间:2018-08-21 01:28:53

标签: algorithm encoding binary hex checksum

我正在使用HxD检查.d2s文件,这使我可以查看文件的未编码字节。

文件大约有900多个字节。

第12到15字节是校验和。

计算校验和的算法如下:

sum = (sum << 1) + data[i];

这是我获得该公式的github页面。

https://github.com/krisives/d2s-format#checksum

许多其他网站报告这是此文件类型的正确公式,因此我相信这是正确的。但是我很难理解和实施它,因此我无法获得明智的结果。

<<是向左的二进制移位,如果我执行(sum << 1),则是将当前的校验和(二进制)向左移位1个位置(或将十进制等效值乘以2)在我添加下一个字节之前。

但是我的文件中有900个字节。我得到一个巨大的数字(比能容纳4个字节或32位或2 ^ 32的数字更大),根据我的理解是正确的。所以我觉得我错了。

这是我尝试计算校验和的小提琴:

http://jsfiddle.net/yghceL3n/

我只复制文件内容并将其粘贴到textarea中,校验和就会输出到页面和控制台。

这整个练习都是出于学习目的。

0 个答案:

没有答案