- 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积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
