📜  Node.js Buffer.writeUInt16LE() 方法(1)

📅  最后修改于: 2023-12-03 15:17:54.121000             🧑  作者: Mango

Node.js Buffer.writeUInt16LE() 方法

在 Node.js 中,Buffer 类型是用于处理二进制数据的类。其中,writeUInt16LE() 方法可以将一个 16 位无符号整数值(0 - 65535)以小端字节序写入到 Buffer 实例的指定位置。

语法
buffer.writeUInt16LE(value, offset[, noAssert])
参数
  • value:一个 16 位无符号整数值。
  • offset:整数类型,指定在 Buffer 实例的哪个偏移量开始写入数据。
  • noAssert:一个可选参数,在默认情况下,写入数据时会进行数据范围检查。如果将此参数设置为 true,则表示不进行检查,可以提高 write 速度。
返回值

返回一个 Number 类型的无符号整数。

示例
const buf = Buffer.alloc(4);

buf.writeUInt16LE(0x0201, 0);
console.log(buf);
// 输出:<Buffer 01 02 00 00>

buf.writeUInt16LE(0x0403, 2);
console.log(buf);
// 输出:<Buffer 01 02 03 04>

在上面的代码中,首先使用 Buffer.alloc(4) 创建了一个长度为 4 的 Buffer 实例,并将其赋值给变量 buf。然后,使用 buf.writeUInt16LE(0x0201, 0) 将十六进制数 0x0201 (等同于 513)以小端字节序写入到 buf 中的前两个字节中。由于是小端字节序,所以写入时需要先写入低位字节 0x01,再写入高位字节 0x02。最后,使用 console.log()buf 中的值输出到控制台中,可以看到输出的结果是 <Buffer 01 02 00 00>

接着,使用 buf.writeUInt16LE(0x0403, 2) 将十六进制数 0x0403 (等同于 1027)以小端字节序写入到 buf 中的第 3 和第 4 个字节中。与上面类似,写入时需要先写入低位字节 0x03,再写入高位字节 0x04。最后,再次使用 console.log()buf 中的值输出到控制台中,可以看到输出的结果是 <Buffer 01 02 03 04>

注意事项
  • 在使用 writeUInt16LE() 写入数据时,需要注意写入的数据长度不要超过 Buffer 实例的总长度,否则会抛出 ”RangeError: Index out of range“ 的错误。
  • 在使用 writeUInt16LE() 写入数据时,需要注意写入的数据不能超过 16 位非负整数的范围,否则会抛出 ”RangeError: value out of range“ 的错误。
  • 如果在写入数据时使用了 noAssert 参数,并且写入的数据超出了 16 位非负整数的范围,则会将无符号整数的值对 2^16 取模。例如,写入的数据为 -1,则会被取模为 0xFFFF