Как реализовать операцию XOR для шестнадцатеричных значений в JavaScript
Я следовал этой скрипке http://jsfiddle.net/4m6d3/, чтобы выполнить операцию Xor, если я ввожу число, оно работает, но когда я ввожу шестнадцатеричное значение, оно отображается как NAN. Пожалуйста, предложите, как сделать операцию XOR для шестнадцатеричных значений в JavaScript.
function bitCalc(num1, num2, mode) {
var arr1 = getPaddedArray(num1, num2.length),
arr2 = getPaddedArray(num2, num1.length);
console.log(arr1)
console.log(arr2)
var res = arr1.map(function(bit1,i) {
bit1 = parseInt(bit1,10);
var bit2 = parseInt(arr2[i],10);
switch (mode) {
case "and":
return Math.floor((bit1+bit2)/2);
case "or":
return Math.ceil((bit1+bit2)/2);
case "xor":
return Math.abs(bit1-bit2);
}
});
return res.join("");
}
function getPaddedArray(str, length) {
var arr = str.split("");
if (arr.length < length) {
return Array(length + 1 - arr.length).join(0).split("").concat(arr);
} else return arr;
}
заранее спасибо
1 ответ
Решение
Попробуй это
bit1 = parseInt("0x"+bit1,16);
var bit2 = parseInt("0x"+arr2[i],16);
вместо
bit1 = parseInt(bit1,10);
var bit2 = parseInt(arr2[i],10);
Смотрите эту рабочую скрипку: http://jsfiddle.net/4m6d3/3/