2016-11-27 41 views
-1

我試圖異或兩個字符串。它用指數表示法返回值,但在我的情況下,我需要用0填充不匹配的字符串。如何使用javascript異或我的字符串

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

+1

這些數字太大了JavaScript的精確處理。考慮使用字符串函數。 –

+0

一次只做一個字符並連接結果。只要寫你自己的字符異或。查看http://stackoverflow.com/questions/20566421/xor-of-two-hex-strings-in-javascript瞭解一些想法。 –

+0

這與angularjs有什麼關係?不要僅僅因爲您在應用程序的其他部分使用框架而針對語言問題使用框架標記.... – Claies

回答

2

在代碼中,你解析字符串二進制數。 parseInt("0001100", 2)0b00110012十進制。你試圖解析的數字是比MAX_SAFE_INTEGER方式,但這是那種無關反正...

這是不可能的前導零添加到使用XOR一些,因爲領先的數字隱含反正有,所以它不會改變數字的表示形式:

(0b0000^0b100) === 0b100,所以toString(2)-這將讓你"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);

相關問題