如何在JavaScript缓冲区中高效地读/写无符号16位整数?

如何在JavaScript缓冲区中高效地读/写无符号16位整数?,javascript,binary,buffer,Javascript,Binary,Buffer,我试图存储0和65535之间的正整数,但这些函数使用有符号整数逻辑,引发错误: [ERR_OUT_OF_RANGE]: The value of "value" is out of range. It must be >= -32768 and <= 32767. Received 40983 如何在JavaScript中高效地将16位无符号整数读/写到缓冲区 我意识到我可以将这些值偏移-32768,然后在读取时将它们移回原处,但这是一个额外的数学步骤,我的代码

我试图存储0和65535之间的正整数,但这些函数使用有符号整数逻辑,引发错误:

[ERR_OUT_OF_RANGE]: The value of "value" is out of range. It must be >= -32768 and <= 32767. Received 40983
如何在JavaScript中高效地将16位无符号整数读/写到缓冲区


我意识到我可以将这些值偏移-32768,然后在读取时将它们移回原处,但这是一个额外的数学步骤,我的代码中的读取速度性能是绝对关键的。如果不需要任何额外的数学运算就可以做到这一点,那是非常可取的。做这些事情的本机函数使用优化的C++代码,导致这样的良好性能,即使是小的数学运算也只是微不足道的差别,如果只是FUNC中的这两个指令。

使用<代码> b你缺少了
U
。你能详细说明一下你想做什么吗?在没有看到全局的情况下,很难给出关于效率的答案。@Brad,就是这么简单吗?我浏览了文档,没有注意到两个不同的版本,天哪。谢谢你,伙计。编辑:显然我甚至在阅读功能中使用了正确的版本。。
const readInt16 = (b) => {
  return b.readUInt16BE(0);
}
const setInt16 = (int16) => {
  // realistically the buffer is allocated outside the func and re-used
  const b = Buffer.alloc(2); 
  b.writeInt16LE(int16)
  return b;
}