bit-sequence

中文文档
2.0.1发布于 2026/11/03Apache-2.0TypeScriptES Module零依赖构建来源已验证

将字节数组中的任意位序列转换为整数

中文使用文档
文档目录7 节
  1. 要求
  2. JavaScript
  3. 例子
  4. API
  5. 去
  6. API
  7. 许可与版权

位序列

NPM

将字节数组中的任意位序列转换为整数

要求

Node.js >= 20

JavaScript

给定一个 Array像包含字节(无符号8位整数)一样,提取底层位的任意序列并将其转换为无符号整数值。

用于使用较长字节序列中的位子序列来形成索引的情况,例如在 哈希数组映射trie 其中树结构的每个级别上的索引是由键的散列的增量块组成的。

例子

import bitSequence from 'bit-sequence'
import assert from 'node:assert'
const bytes = new Uint8Array([ 0b00010101, 0b10101000, 0b00000000, 0b00000000 ])
//               extract bits from here ^         to here ^
const int = bitSequence(bytes, 7, 11)
assert.strictEqual(int, 0b11010100000) // or `1696`

API

bitSequence(bytes, start, length)

  • bytes 是一个 Array像包含字节一样。假设它可以通过数组索引操作符访问,并且它将返回8位整数(< 255). 一个 Uint8Array 或node . js Buffer 就像标准一样,也属于这一类 Array然而,8位假设并没有被强制执行 Array 满是较大的整数将产生未定义的结果。
  • start 是一个整数 位 索引开始提取(不是 字节 索引)。
  • length 要提取的位数是多少 bytes 数组中。

返回一个 无符号整数 位序列的版本。最高有效位不被解释为2的恭维表示。你应该只得到正数 >= 0.

根据上面的示例,假设我们提取的字节中最低有效位在右侧,因此我们按照二进制字面值表示的顺序进行提取。

JavaScript的疯狂数字允许我们提取潜在的非常大的位序列,但通常的警告适用于32位及以上 Number.MAX_SAFE_INTEGER.

去

github.com/rvagg/bit-sequence/go

API

出口 BitSequence(bytes []byte, bitStart uint32, bitLength uint32) (uint32, error) 地点:

  • bytes 是一个简单的字节数组的任意长度
  • bitStart 是一个 位 索引开始提取(不是 字节 索引)。
  • bitLength 要提取的位数是多少 bytes 数组中。该值只能为的最大值 32,较高的值将向下调整。

返回位序列的无符号整数版本。最高有效位不被解释为2的恭维表示。 返回一个错误 bitLength 超过32或请求的序列超出字节边界。

版权所有2019 Rod Vagg

根据Apache许可证2.0版(“许可证”)进行许可;除非遵守许可,否则您不得使用此文件。您可以从以下网址获得许可证的副本 http://www.apache.org/licenses/LICENSE-2.0

除非适用法律另有规定或双方书面约定,否则根据本许可证分发的软件按“原样”提供,不附带任何明示或暗示的担保或条件。有关许可证中规定的具体语言、权限及限制,请参阅该许可证。

版本与发布记录

bit-sequence 共发布 22 个版本,首次发布于 2019/07/24;过去 12 个月发布了 20 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.1latest2026/11/03今天
2.0.02026/10/277 天前
1.2.172026/10/277 天前
1.2.162026/10/1915 天前
1.2.152026/08/032 个月前
1.2.142026/08/033 个月前

关于 bit-sequence 的常见问题

bit-sequence 是什么?

将字节数组中的任意位序列转换为整数

如何安装 bit-sequence?

在项目目录运行 npm install bit-sequence,或使用 pnpm add / yarn add / bun add。

bit-sequence 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

bit-sequence 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

bit-sequence 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

bit-sequence 可以商用吗?

bit-sequence 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

bit-sequence 还在维护吗?

最新版本 2.0.1 发布于 2026/11/03(今天);至今共发布 22 个版本,其中过去 12 个月发布了 20 个;首次发布于 2019/07/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。