简体   繁体   English

如何在javascript中对十六进制值实现XOR操作

[英]How to implement XOR operation for Hexadecimal values in javascript

I followed this fiddle jsfiddle.net/4m6d3/ to do Xor Operation ,if i enter number it works but when I enter Hexadecimal then it is displaying as NAN. 我按照这个小提琴jsfiddle.net/4m6d3/进行异或运算,如果我输入数字可以工作,但是当我输入十六进制时它显示为NAN。 Please Suggest How to do XOR Operation for hexadecimal values in JavaScript. 请建议如何对JavaScript中的十六进制值执行XOR操作。

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;
}

Thanks in advance 提前致谢

Try this 尝试这个

    bit1 = parseInt("0x"+bit1,16);
    var bit2 = parseInt("0x"+arr2[i],16);

instead of 代替

    bit1 = parseInt(bit1,10);
    var bit2 = parseInt(arr2[i],10);

See this working fiddle: http://jsfiddle.net/4m6d3/3/ 参见此工作提琴: http : //jsfiddle.net/4m6d3/3/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM