long型数据怎么转成 ArrayBuffer 64位二进制数据?

前后端用websocket通信,前端怎么将long型数据转为 ArrayBuffer 64位二进制数据

阅读 2.7k
2 个回答

刚刚开始想用位运算,一直算到64位的,但是发现js的位运算只能到达31位...然后再高就是又一个循环..
于是就想到将十进制转换十六进制,然后取高位再运算一次

    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);
var num = 12
var ab = new ArrayBuffer(1)
ab[0] = num
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进