我正在使用网络套接字。
我正在将 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/