1
現在,當數字很小時,這很簡單,但像「9223372036854775807」這樣的數字對於parseInt()來說太大了。如何將字符串轉換爲javascript中的位掩碼?
我不確定如何在Google文檔腳本編輯器中執行此操作,但似乎不允許使用外部類。
現在,當數字很小時,這很簡單,但像「9223372036854775807」這樣的數字對於parseInt()來說太大了。如何將字符串轉換爲javascript中的位掩碼?
我不確定如何在Google文檔腳本編輯器中執行此操作,但似乎不允許使用外部類。
在這裏,你使用這個腳本的地方,它似乎工作。其背後的想法是,它將字符串分成8個字符的塊,然後計算塊/ 2,然後將塊加起來得到除法結果2.
除以2 - 它很容易計算結果然後。
var maxIntSize = 8;
function divide2(number, addup, depth) {
var result = "";
var partLength = Math.min(number.length,maxIntSize);
var part = number.substring(0,partLength);
var partNum = parseInt(part,10);
var partAdd = (addup==0)?0:(5*Math.pow(10,partLength-1));
var partRes = Math.floor(partNum/2)+partAdd;
var partRem = partNum%2;
result = result + partRes;
if (depth > 0) {
for (var i=result.length; i < partLength; i++) {
result = "0"+result;
}
}
var nextPart = number.substring(partLength, number.length);
if (partLength < number.length) {
var res = divide2(nextPart, partRem, depth+1);
result = result + res.result;
res.result = result;
return res;
} else {
var res = {result: result, remainder: partRem};
return res;
}
}
function toBinary(number) {
var out = "";
while (number.length > 1 || number != "0") {
var res = divide2(number,0,0);
out = "" + res.remainder + out;
number = res.result;
}
return out;
}
var testNum = "12312312312112312312312312312312312312312312312312312312312312312312312312312312312312312312123";
document.write("bin("+testNum+") = "+toBinary(""+testNum)+"<br/>");
劃分爲塊需要快速計算除法2。即使對於龐大的數字,這個腳本的運行也相當快
你想要9223372036854775807位? – Kobi 2010-06-18 16:19:28