Javascript字节数组是否为长?

Javascript字节数组是否为长?,java,javascript,byte,bytearray,long-integer,Java,Javascript,Byte,Bytearray,Long Integer,我有一个用Java构建的byteArray,它包含long。我需要能够用Javascript阅读这些长文本。我知道Javascript默认情况下不支持long。这有什么办法吗?我可以把它读成字符串吗 谢谢我想与大家分享我的技巧,这可能对某些人有用 我的java服务器通过二进制websocket消息从System.currentTimeMillis()向所有客户端发送带有长时间戳的播放器位置。在客户端,我使用DataView解析此消息 但是DataView没有方法getInt64()。我的解决办法

我有一个用Java构建的
byteArray
,它包含
long
。我需要能够用Javascript阅读这些长文本。我知道Javascript默认情况下不支持
long
。这有什么办法吗?我可以把它读成
字符串吗


谢谢

我想与大家分享我的技巧,这可能对某些人有用

我的java服务器通过二进制websocket消息从
System.currentTimeMillis()
向所有客户端发送带有长时间戳的播放器位置。在客户端,我使用
DataView
解析此消息

但是DataView没有方法
getInt64()
。我的解决办法是把long分成两部分

在服务器端:

long time = System.currentTimeMillis();
int firstPiece = (int)(time / 1000);
short secondPiece = (short)(time % 1000);
在客户端:

let data = {};
let view = new DataView(binary);
data.t = view.getInt32(offset) * 1000 + view.getInt16(offset + 4);

这也节省了2个字节(长8字节>int 4字节+短2字节),但它将工作到2038年。

下面的
DataView.getInt64()
实现将使您能够以足够的精度完成此操作:


真正的问题是,由于JavaScript只知道IEEE 754 64位浮点数,因此数字不能大于2^53-1。但您可以使用位操作尽可能多地重构。您还应该知道字节顺序是LE还是BE,当然请参见下面的答案,
currentTimeMilis()
将是<2^53