Node.js读取无符号大端整数的任意大小限制?

3

背景

我正在使用Node.js缓冲区本地API读取缓冲区。该API有两个函数,分别称为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个回答

2

答案

在官方Node.js仓库中提问后,我从其中一位成员那里得到了以下回复:

  1. 不,这不是一个错别字
  2. byteLength 对应 8位、16位、24位、32位、40位和48位。由于JS数字仅安全到Number.MAX_SAFE_INTEGER,因此不能使用更多。
  3. 如果您想要读取8个字节,可以通过添加偏移量来读取多个条目。

来源:https://github.com/nodejs/node/issues/20249#issuecomment-383899009


我在 GPS 跟踪器代码中遇到了一个问题,其中 IMEI 由 8 个字节组成,通过简单地使用 readBigUint64BE 来解决它,以便读取的字节数为 8。https://screenshots.anarjafarov.me/Snap_2022-10-08_14-16-47.jpg - num8er

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接