我在Node js中有一个十六进制缓冲区,如下所示:
buffer <00 E0>
我需要使用小endianes转换为int。所以我会读E000->57344
目前我使用的方法是:
var str = "0x" + buffer [i] .toString ('16 '). toString + buffer [i-1] .toString ('16'). toString to convert to string
var result=parseInt(str(。
这个方法有效,但有时我会遇到这样的错误:buffer[0]=00,但我收到0而不是00或1,而不是01或10,
有没有其他方法可以获得这种转换或解决这个问题?
谢谢
考虑使用Buffer.readInt*LE或Buffer.readUInt*LE方法(*表示整数大小,LE表示小端序(。以您的代码为例,您可以使用Buffer.readIntLE:
Buffer.from([ 0x00, 0xe0]).readUIntLE(0, 2)
如果缓冲区大小可变:
var buffer = Buffer.from(bytes);
var result = buffer.readUIntLE(0, bytes.length) // assumes bytes.length is even