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

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

Node.js Buffer.writeUInt16BE() 方法

Buffer.writeUInt16BE() 方法可以将无符号16位整数值(big-endian)写入Buffer对象中指定的偏移量。下面是该方法的语法:

buf.writeUInt16BE(value, offset[, noAssert])

其中,参数的含义如下:

  • value:要写入buffer的无符号16位整数值,数据类型为number;
  • offset:从buffer对象的哪个偏移量开始写入,数据类型为number;
  • noAssert:一个可选的布尔值,表示是否应进行边界检查。默认值为false。

如果要写入的值超出了buffer的长度,或noAssert参数为true但写入的值在0到65535之外,则抛出RangeError类型的错误。

写入成功之后,buffer对象就被更新了。例如:

const buf = Buffer.alloc(4);
buf.writeUInt16BE(1024, 1);
console.log(buf); // 输出 <Buffer 00 04 00 00>

在这个例子里,buf对象被初始化为长度为4字节的Buffer对象。然后,调用writeUInt16BE()方法写入数值1024,写入的位置是从第二个字节(即下标为1)开始。这个位置可以看做是buffer的偏移量。由于该方法采用big-endian格式写入,因此写入的结果是0x0400(十六进制表示,占用了两个字节),分别存储在buf对象的下标为1和下标为2的位置。

总结
  • Buffer.writeUInt16BE() 方法可以将无符号16位整数值写入指定的buffer对象中;
  • 写入的格式是big-endian,占用buffer对象中的连续两个字节;
  • 如果写入值的范围不符合要求,会抛出RangeError类型的错误;
  • 写入成功之后,buffer对象会被更新。