【发布时间】:2018-11-28 14:52:00
【问题描述】:
我知道 JavaScript 不能精确地表示所有 64 位整数。但它可以精确地表示大于 32 位的数字。这就是我需要的。 JavaScript 可以提供给我的任何精度。
我有一个已知长度的字节数组。它有 1、2、4、8 或 16 个字节。它可以包含有符号或无符号整数,我知道它是什么。数据是大端(网络字节序)。
如何从该字节数组中获取数值?
有一些简单的孤立点在负数上完全失败。有超过 32 位的 DataView 没有任何帮助。我对处理这个问题的一个很好的、简单的、更可取的高效纯 JavaScript 解决方案感兴趣。在我可见的网络部分中似乎没有任何解决方案。
如果有人想看到错误的代码,这里是我的正数版本:
function readInt(array) {
var value = 0;
for (var i = array.length - 1; i >= 0; i--) {
value = (value * 256) + array[i];
}
return value;
}
【问题讨论】:
-
到目前为止你尝试过什么?另外,你的数组的字节序是什么?
-
我添加了错误的代码。数据是大端的。
-
当它是大端时,你为什么要向后迭代?
-
正如我所说,这段代码不起作用。我已经从另一个 SO 答案中复制了它。
-
您是否尝试过以另一种方式迭代
for (var i = 0; i < array.length; i++) {? PS:当您只是从另一个帖子中复制并声称它不起作用时,这并不是您对该主题的尝试或想法。
标签: javascript arrays binary numbers