long到number转换 ts_JavaScript中如何转换Long类型?

我知道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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值