10

当您读取一大块字节并需要将它们转换为数字时,node.js 具有类似buffer.readInt32BE()和的功能buffer.readInt32LE()

如果我只知道一个文件的前4个字节是一个整数,如果我不知道系统的字节序,我应该使用什么函数?大端还是小端?

在 C 中进行快速谷歌搜索(stackoverflow),我们可以测试字节顺序:

if ( htonl(47) == 47 ) {
  // Big endian
} else {
  // Little endian.
}

我们如何测试 node.js 中的字节序以正确使用 readInt32BE 和 readInt32Le?

4

3 回答 3

14

os.endianness()返回 CPU 的字节顺序。可能的值为“BE”或“LE”。

它是在 Node.js v0.10.0 中添加的,它不包含在 <= v0.8.25 中。

来源:http ://nodejs.org/api/os.html#os_os_endianness

于 2013-08-22T00:08:50.090 回答
2

如果您使用类型化数组,这完全有可能,甚至是合理的做法。我写了一个快速模块来检查你的系统是否是 node.js 上的小端:

https://npmjs.org/package/is-little-endian

于 2013-02-25T19:01:07.130 回答
-1

您不需要测试主机系统的字节顺序。

您需要调查使用哪个字节顺序格式化缓冲区,并使用正确的变体再次将其读出。

于 2012-04-25T13:48:54.587 回答