簡體   English   中英

如何在javascript中將字符串轉換為位掩碼?

[英]How do I convert a string into a bitmask in javascript?

現在,當數字較小時,這很簡單,但是對於parseInt()來說,諸如“ 9223372036854775807”之類的數字太大。

我不確定如何在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。 即使數量龐大,此腳本也能快速運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM