Node.js readUIntBE任意大小限制?

时间:2018-04-24 11:17:05

标签: node.js buffer

背景

我正在使用Node.js缓冲区本机API读取缓冲区。此API分别为Big Endian和Little Endian提供了两个名为readUIntBEreadUIntLE的函数。

https://nodejs.org/api/buffer.html#buffer_buf_readuintbe_offset_bytelength_noassert

问题

通过阅读文档,我偶然发现了以下几行:

  • byteLength要读取的字节数。必须满足:0< byteLength< = 6。

如果我理解正确,这意味着我只能使用此函数一次读取6个字节,这使得它对我的用例无用,因为我需要读取由8个字节组成的时间戳。

问题

  1. 这是文档错字吗?
  2. 如果没有,这种任意限制的原因是什么?
  3. 如何连续读取8个字节(或者如何读取大于6个字节的序列?)

1 个答案:

答案 0 :(得分:0)

答案

在官方Node.js回购中询问后,我收到了其中一位成员的以下回复:

  1. 不,这不是一个错字
  2. byteLength对应于例如8位,16位,24位,32位,40位和48位。更多是不可能的,因为JS编号只能安全到Number.MAX_SAFE_INTEGER。
  3. 如果要读取8个字节,可以通过添加偏移量来读取多个条目。
  4. 来源:https://github.com/nodejs/node/issues/20249#issuecomment-383899009