如何testingnode.js中的字节顺序

当你读取一个字节块,你需要将它们转换为一个数字,node.js有像buffer.readInt32BE()buffer.readInt32LE()函数。

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

做一个快速的谷歌search( stackoverflow ),在C我们可以testing的sorting做:

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

我们如何testingnode.js中的字节顺序来正确使用readInt32BE和readInt32Le?

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

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

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

完全可能,甚至合理的做,如果你正在处理types的数组。 我写了一个快速模块来检查你的系统是否在node.js上是little endian:

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

您不应该需要testing主机系统的字节序。

您需要调查缓冲区使用哪种字节顺序,并使用正确的变体再次读取。