2016-11-27 7 views
-1

2文字列をXORしようとしていますか?指数表記で値を返していますが、私の場合は、一致しない文字列に0を埋め込む必要があります。あなたのコードでjavascriptを使用して文字列をxorにする方法

x1 = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; 
 
x2 = "00000000000000000000000000000000011000000000000000000000000000000000000000000000000000000"; 
 
xor1 = parseInt(x1, 2); 
 
xor2 = parseInt(x2, 2); 
 
console.log(xor1, xor2);

+1

これらの数字にはJavaScriptを正確に処理するには大きすぎます。代わりに文字列関数の使用を検討してください。 –

+0

一度に1文字ずつ行い、結果を連結します。あなた自身のXORで文字を書くだけです。いくつかのアイデアについては、http://stackoverflow.com/questions/20566421/xor-of-two-hex-strings-in-javascriptをご覧ください。 –

+0

これはangularjsと何が関係していますか?アプリケーションの他の部分でフレームワークを使用しているという理由だけで、言語質問にフレームワークタグを使用しないでください。 – Claies

答えて

2

、あなたは二進数に文字列を解析しています。 parseInt("0001100", 2)0b001100、または小数点では12です。あなたが解析しようとしている数字はMAX_SAFE_INTEGERより大きな方法ですが、それはとにかく種類の無関係だ...

有数の数字はとにかく暗黙のうちにあるので、それは、XORを使用して数値に先行ゼロを追加することはできませんしたがって、数値の表現は変更されません。

(0b0000^0b100) === 0b100ですので、"100"のままになります。

文字列ごとに文字列を調べ、文字列を作成する必要があります。

let x = "11000000000000000000000000000000000000000000000000000000"; 
 
let mask = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; 
 

 
let result = mask.split("").reduceRight(function(partialResult, value, index) { 
 
    if (index < x.length && x.charAt(x.length - index - 1) === "1") { 
 
    return partialResult + "1"; 
 
    } else { 
 
    return partialResult + "0"; 
 
    } 
 
}, ""); 
 

 
console.log("Result is: " + result);

関連する問題