当我将二进制数据与十进制值进行异或时,会给出错误的结果。
考虑了我的以下程序:
var hexarr = 'f86b8204';
binayrData = hexarr.charCodeAt(0).toString(2);
decimalData = hexarr.charCodeAt(0);
hexData = hexarr.charCodeAt(0).toString(16);
console.log("binaryData: ", binayrData);
console.log("binaryData^3: ", binayrData ^ 3);
console.log("decimalData : ", decimalData);
console.log("decimalData^3 : ", decimalData ^ 3);
console.log("hexData: ", hexData);
console.log("hexData^3: ", hexData ^ 3);
这是输出
binaryData: 1100110
binaryData^3: 1100109
decimalData : 102
decimalData^3 : 101
hexData: 66
hexData^3: 65
最佳答案
当您认为要将数字转换为不同的基数时,您实际上是在创建代表这些基数中的数字的字符串。然后,当您尝试对它们进行异或时,JS 会将这些字符串转换为数字,但不知道它们的基数是什么,并将它们视为小数。
您真正想要做的是将基本转换推至显示数据时的点。
var hexarr = 'f86b8204';
binaryData = hexarr.charCodeAt(0);
console.log("binaryData: ", binaryData.toString(2));
console.log("binaryData^3: ", (binaryData ^ 3).toString(2));
console.log("decimalData : ", binaryData.toString(10));
console.log("decimalData^3 : ", (binaryData^ 3).toString(10));
console.log("hexData: ", binaryData.toString(16));
console.log("hexData^3: ", (binaryData ^ 3).toString(16));
关于javascript - 如何对纯二进制数据进行纯按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58623079/