2013-12-13 9 views
12
var hex1 = "B1C85C061C98E713DEF0E2EDDDDB432738674C9F8962F09B75E943D55F9FB39F"; 
var hex2 = "121B0D3327A21B8048FC7CA6FD07AACC0D8DF59B99DB098686696573E3686E6C"; 

var result = hex1^hex2; //XOR the values 

console.log(result); // outputs: 0 which does not sound good. 

16進値でXOR演算を実行する方法はありますか?JavaScript内の2つの16進文字列のXOR

答えて

7

JavaScriptのビット演算は数値のみで動作します。

parseInt(hexString, 16)前に16進文字列を入力する必要があります。具体的には、あなたのヘックスは数字のために大きいので、これはうまくいかないでしょう。独自のカスタマイズされたXOR関数を作成する必要があります。

は、このリンクを見てみましょう:How to convert hex string into a bytes array, and a bytes array in the hex string?

結果のByteArrayは手動XORためellegibleになります。バイト単位のバイト。たぶん、これは役に立ちます:Java XOR over two arrays。あなたはこのような関数を使用することができます

"*)(" 
3
str = 'abc'; 
c = ''; 
key = 'K'; 
for(i=0; i<str.length; i++) { 
    c += String.fromCharCode(str[i].charCodeAt(0).toString(10)^key.charCodeAt(0).toString(10)); // XORing with letter 'K' 
} 
return c; 

出力 'ABC'。

function xor(a, b) { 
    if (!Buffer.isBuffer(a)) a = new Buffer(a) 
    if (!Buffer.isBuffer(b)) b = new Buffer(b) 
    var res = [] 
    if (a.length > b.length) { 
    for (var i = 0; i < b.length; i++) { 
     res.push(a[i]^b[i]) 
    } 
} else { 
for (var i = 0; i < a.length; i++) { 
    res.push(a[i]^b[i]) 
    } 
} 
return new Buffer(res); 
} 

出典:https://github.com/czzarr/node-bitwise-xor

+1

が '' str'ことcli'べきではないのですか? – Tieme

+0

はい、あなたは正しいです。私は変更されます。ありがとう:-) – ajaykools

関連する問題