Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nodejs将十六进制缓冲区转换为int_Javascript_Node.js - Fatal编程技术网

Javascript 使用nodejs将十六进制缓冲区转换为int

Javascript 使用nodejs将十六进制缓冲区转换为int,javascript,node.js,Javascript,Node.js,我在节点js中有一个十六进制缓冲区,如下所示: buffer <00 E0> var result=parseInt(str) 这个方法是有效的,但有时我会遇到这样的错误:buffer[0]=00,但我接收到的是0,而不是00或1,而不是01或10 有没有其他方法来获取此转换或解决此问题 谢谢考虑使用这些方法(*代表整数大小,LE代表小端)。以您的代码为例,您可以使用: 如果缓冲区大小可变: var buffer = Buffer.from(bytes); var result =

我在节点js中有一个十六进制缓冲区,如下所示:

buffer <00 E0>
var result=parseInt(str)

这个方法是有效的,但有时我会遇到这样的错误:buffer[0]=00,但我接收到的是0,而不是00或1,而不是01或10

有没有其他方法来获取此转换或解决此问题

谢谢

考虑使用这些方法(*代表整数大小,LE代表小端)。以您的代码为例,您可以使用:

如果缓冲区大小可变:

var buffer = Buffer.from(bytes);
var result = buffer.readUIntLE(0, bytes.length) // assumes bytes.length is even

谢谢我尝试了这个方法和它的工作,但是读doc:“在指定的偏移量处从buf读取byteLength字节数,并将结果解释为一个无符号的小整数,支持高达48位的精度。”当我需要读取字节数<6时,它工作,但当我需要转换字节数>6时(例如128)不起作用。我如何转换它?谢谢你问我如何使用整数,所以我假设是32位。您可以改为使用
readBigInt64LE
读取64位缓冲区。超过这个数就不再是整数了,所以你需要一个更复杂的代码。是的!在这种情况下,我必须转换为字符串。我先读取并转换为整数(使用readUIntLE),然后使用fromCharCode(int)获取字符串。谢谢@init,考虑把我的答案标记为把V勾到左边。
Buffer.from([ 0x00, 0xe0]).readUIntLE(0, 2)
var buffer = Buffer.from(bytes);
var result = buffer.readUIntLE(0, bytes.length) // assumes bytes.length is even