как выполнить чисто побитовую операцию на чистых двоичных данных - PullRequest
0 голосов
/ 30 октября 2019

Когда я XOR двоичных данных с десятичным значением, дает неправильные результаты.

Рассматривал мою следующую программу:

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

1 Ответ

2 голосов
/ 30 октября 2019

Когда вы думаете, что конвертируете свои числа в другую базу, вы фактически создаете строки, которые представляют ваше число в этих базах. Когда вы затем попытаетесь их XOR, 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));
...