鍍金池/ 問答/HTML/ long型數(shù)據怎么轉成 ArrayBuffer 64位二進制數(shù)據?

long型數(shù)據怎么轉成 ArrayBuffer 64位二進制數(shù)據?

前后端用websocket通信,前端怎么將long型數(shù)據轉為 ArrayBuffer 64位二進制數(shù)據

回答
編輯回答
淺淺

剛剛開始想用位運算,一直算到64位的,但是發(fā)現(xiàn)js的位運算只能到達31位...然后再高就是又一個循環(huán)..
于是就想到將十進制轉換十六進制,然后取高位再運算一次

    function long2bin(p) {
        var r = new ArrayBuffer(8);
        r[7] = p & 0xff;
        r[6] = p >> 8 & 0xff;
        r[5] = p >> 16 & 0xff;
        r[4] = p >> 24 & 0xff;
        p = p.toString(16); //轉換成16進制,取出高位
        if (p.length <= 8) {
            return r;
        }
        p = parseInt(p.substr(0, p.length - 8),16);//取出高位,并轉換成int
        r[3] = p & 0xff;
        r[2] = p >> 8 & 0xff;
        r[1] = p >> 16 & 0xff;
        r[0] = p >> 24 & 0xff;
        return r;
    }
    var l = 1234567891011;
    long2bin(l);
2017年5月15日 17:45
編輯回答
眼雜
var num = 12
var ab = new ArrayBuffer(1)
ab[0] = num
2017年12月4日 05:40