如何测试在node.js的字节顺序(How to test endianness in node.j

2019-09-16 18:05发布

当你读取的字节块,你需要将它们转换为数字,node.js中具有类似功能的buffer.readInt32BE()buffer.readInt32LE()

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

做一个快速谷歌搜索( 计算器 ),在C我们可以测试存储方式做:

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

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

Answer 1:

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

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

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



Answer 2:

完全有可能,甚至是合理的做,如果你与类型数组工作。 我写了一个快速检查模块,如果你的系统是node.js的小端:

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



Answer 3:

你不应该需要测试主机系统的字节序。

你需要调查哪些字节顺序缓冲区使用的格式,并使用正确的变种再读一遍。



文章来源: How to test endianness in node.js