首页 > 解决方案 > 在JS中对两个长十六进制值执行按位运算的最有效方法是什么?

问题描述

我正在尝试对两个 128 字节的十六进制值执行 AND 操作。就像是:

let toReturn = (parseInt(bytesA, 16) & parseInt(bytesB, 16)).toString(16);

对于不超过 0xfffffff 的值,似乎效果很好。除此之外,我开始得到不正确的值。

我考虑过遍历这两个值 - 一个字节一个字节,但我的整体代码有点重,各种 128 字节的值需要在一个循环中比较 8 次,它嵌套在另一个循环中(最多 50 次迭代),所有这些都在页面加载上。

我希望为此找到更有效的解决方案。

标签: javascriptbitwise-operators

解决方案


使用BigInt

let toReturn = (BigInt('0x' + bytesA) & BigInt('0x' + bytesB)).toString(16);

推荐阅读