如何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:
您不应该需要testing主机系统的字节序。
您需要调查缓冲区使用哪种字节顺序,并使用正确的变体再次读取。