账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JavaScript中如何转换Long类型?
    49
    0

    我知道JavaScript中并没有Long类型,但是要如何才能将相应的bytes字节码转换为Long类型呢?以下是一段java代码,在java中可以很容易的进行转换,比如

    byte [] a = {0x02,0x03, 0x04, 0x05, 0x06,0x07, 0x08, 0x09};
    public static long bytesToLong( byte[] array ) {
            if(array.length==0) return 0;
            return ((((long) array[ 0] & 0xff) << 56)
                    | (((long) array[ 1] & 0xff) << 48)
                    | (((long) array[ 2] & 0xff) << 40)
                    | (((long) array[ 3] & 0xff) << 32)
                    | (((long) array[ 4] & 0xff) << 24)
                    | (((long) array[ 5] & 0xff) << 16)
                    | (((long) array[ 6] & 0xff) << 8)
                    | (((long) array[ 7] & 0xff) << 0)
            );
        }
    

    以上代码在java中最终输出是: 144964032628459529

    我尝试使用JavaScript的Uint8Array以及ArrayBuffer写了一个相对应方法,使用过parseFloat去转换array[]数组,但是并没有成功,下面代码输出的是101125133,苦恼JavaScript没有Long类型转换,该如何是好?王大神支招

        let bcd = new Uint8Array(8)
            bcd[0] = 0x02
            bcd[1] = 0x03
            bcd[2] = 0x04
            bcd[3] = 0x05
            bcd[4] = 0x06
            bcd[5] = 0x07
            bcd[6] = 0x08
            bcd[7] = 0x09
    function bytesToLong(array) {
            if (array.length === 0) return 0
            return (((array[0] & 0xff) << 56)
                | ((array[1] & 0xff) << 48)
                | ((array[2] & 0xff) << 40)
                | ((array[3] & 0xff) << 32)
                | ((array[4] & 0xff) << 24)
                | ((array[5] & 0xff) << 16)
                | ((array[6] & 0xff) << 8)
                | ((array[7] & 0xff) << 0))
        }
    bytesToLong(bcd)
    //输出101125133
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部