readUint8 做什么?

What does readUint8 do?

const buff = Buffer.from('15') returns 长度=2 的 8 位字节数组,并记录十六进制代码。示例:<Buffer 31 35>

如果我使用带有 [offset] 参数的 buff.readUint8() 或者以其他方式获取数组中的第一个字节,这个函数在做什么?

输出为49.

readUint8() 从缓冲区中取出一个 8 位字节,将其解释为无符号值(因此它允许高位成为值的一部分,不代表符号)然后将其转换8 位到 Javascript 数字(这是一个双精度浮点数),因此您可以将该值用作 Javascript.

中的数字

在你的具体例子中:

<Buffer 31 35>

这是一个二进制数据缓冲区,包含两个十六进制值为 0x31 和 0x35 的值?

readUnint8() 允许您从该缓冲区中提取单个 8 位值并将其转换为 Javascript 中适当的数字格式,以便它可以用作数字。其他类似的函数,例如 .readUInt16BE() 允许您将多个字节组合成一个数字并指定这些字节的顺序(大端或小端,不同计算架构使用的格式)并指定符号还有解释。

像这样的数据源通常是用保存或发送二进制数据的低级语言编写的代码。该二进制数据必须在另一端由一些知道特定字节布局的代码解释,这些 Buffer 函数允许您正确解释该数据。试图理解此数据的代码必须提前知道数据的格式,以便它可以使用正确的函数来解释它。

例如,您可能有一个二进制数据包到达 TCP 连接,其中包含需要像这样解释的结构化数据:

32 bit unsigned integer (in little-endian format)
32-bit signed integer   (in little-endian format)
8-bit unsigned character code
8-bit unsigned character code
8-bit unsigned character code
8-bit unsigned character code

为此,您将使用适当的缓冲区方法从缓冲区中读取这些不同的值,同时将它们转换为 Javascript 中的所需值并正确解释。