我正在编写一种用JavaScript编写的CRC32算法,这是我的新手. 直到最后一步:将校验和与0xFFFFFFFF进行XOR运算之前,一切似乎都很顺利.

1001010100111101101100010001000
 ^ 11111111111111111111111111111111 = -1001010100111101101100010001001

1251924104 ^ 4294967295 = -1251924105

负值似乎是个问题.我能做些什么来解决这个问题?

推荐答案

Java脚本中的按位运算将把一个数字转换成一个带符号的32位整数,最大值为2^31-1.您的号码是0xFFFFFFFF,是2^32-1.

但是,如果您改用BigInts,它将工作得很好:

console.log(0xFFFFFFFF ^ 0)

console.log(String(0xFFFFFFFFn ^ 0n))

注意:我不得不使用String(),因为stackoverflow console.log函数似乎不能处理BigInts.

Javascript相关问答推荐

JS、C++和C#给出不同的Base 64 Guid编码结果

RxJS setTimeout操作符等效

ReactJS中的material UI自动完成类别

使用JavaScript单击上一个或下一个特定按钮创建卡滑动器以滑动单个卡

如何用显示网格平滑地将元素从一个地方移动到另一个地方?

如何找出摆线表面上y与x相交的地方?

如何使覆盖div与可水平滚动的父div相关?

Chromium会将URL与JS一起传递到V8吗?

我怎么在JS里连续加2个骰子的和呢?

使用领域Web SDK的Vite+Vue应用程序中的Web程序集(WASM)错误

查询参数中的JAVASCRIPT/REACT中的括号

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

为什么我的按钮没有从&q;1更改为&q;X&q;?

无法避免UV:flat的插值:非法使用保留字"

从逗号和破折号分隔的给定字符串中查找所有有效的星期几

使用线性插值法旋转直线以查看鼠标会导致 skip

如何使用puppeteer操作所有选项

脚本语法错误只是一个字符串,而不是一个对象?

如何在不将整个文件加载到内存的情况下,在Node.js中实现Unix粘贴命令?

递归地将JSON对象的内容上移一级