javascript - 使用 DataView 读取 ArrayBuffer 中的 Int64

标签 javascript arraybuffer

我正在使用网络套接字。

我正在将 ArrayBuffer 传递到我的 JavaScript 页面。

我在 C# 代码中有这个:

 byte[] packet = new byte[2];
 packet[0] = (byte)1;
 packet[1] = (byte)0;

 byte[] tickArray = BitConverter.GetBytes( 635744635349556838 );
 byte[] packet2 = new byte[2 + tickArray.Length];
 Buffer.BlockCopy(packet, 0, packet2, 0, packet.Length);
 Buffer.BlockCopy(tickArray, 0, packet2, packet.Length, tickArray.Length);

在我的 JavaScript 客户端中我有这个:

 var dv = new DataView(e.data);
 var marker = dv.getInt8(0);
 var tripped = dv.getInt8(1);

 var x = dv.getInt8(2);

我得到了结果:

1
0
-29

如果更改为:

var x= dv.getInt16(1);

-7389

如何获取 635744635349556838 的值?

谢谢

最佳答案

我写了一段代码。会有帮助吗?

function getUint64(bytes, littleEndian)
{
  var low = 4, high = 0;
  if (littleEndian)
  {
    low = 0;
    high = 4;
  }

  var dv = new DataView(Uint8Array.from(bytes ).buffer);

  return (dv.getUint32(high, littleEndian) << 32) |
        dv.getUint32(low, littleEndian);
}
    var bytes = [ 124, 22, 124, 22, 124, 22, 124, 22];
    var value = getUint64(bytes, false);
    console.log(value);

关于javascript - 使用 DataView 读取 ArrayBuffer 中的 Int64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31857374/

相关文章:

javascript - 是否有任何实际理由为 JSON 键使用带引号的字符串?

javascript - 为什么在无状态函数表达式中中断 'console.log'?

javascript - 设置同名绑定(bind)函数的目的是什么?

javascript - 将 ArrayBuffer 的一部分转换为字符串

dart - 我想在 Dart 中使用 ArrayBuffer,但出现异常

javascript - 无法将功能绑定(bind)到按钮单击

javascript - Owl Carousel.js 和 Bootstrap 主题

javascript - 在 ArrayBuffer 中存储一个 json 对象

javascript - 在React中的ArrayBuffer中显示PNG图像

javascript - 通过 websocket 发送时,JSON 将 Float32Array 缓冲区大小增加了很多倍