# bit-sequence 中文文档

规范地址：https://npmcn.com/package/bit-sequence/

版本：2\.0\.1
npm 元数据更新时间：2026-11-03T03:16:02.454Z
中文译文更新时间：2026-11-03T06:31:50.401Z
软件包许可：Apache-2\.0

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/bit-sequence
原文对照：https://npmcn.com/package/bit-sequence/?lang=original
项目主页：https://github.com/rvagg/bit-sequence#readme
源码仓库：https://github.com/rvagg/bit-sequence

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：632 kB，17 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：0 个
- 首次发布：2019-07-24T12:25:32.822Z
- 最新版本发布：2026-11-03T03:16:02.153Z
- 已发布版本数：22（近 12 个月 20 个）

## 中文简介

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

## 安装

```sh
npm install bit-sequence
```

也可以使用：`pnpm add bit-sequence`、`yarn add bit-sequence`、`bun add bit-sequence`

## README

# 位序列

[![NPM](https://nodei.co/npm/bit-sequence.svg?style=flat&data=n,v&color=blue)](https://nodei.co/npm/bit-sequence/)

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

-   [JavaScript](https://npmcn.com/package/bit-sequence/#readme-javascript)
    -   [例子](https://npmcn.com/package/bit-sequence/#readme-example)
    -   [API](https://npmcn.com/package/bit-sequence/#readme-api)
-   [去](https://npmcn.com/package/bit-sequence/#readme-go)
-   [许可与版权](https://npmcn.com/package/bit-sequence/#readme-license-and-copyright)

## 要求

Node.js >= 20

## JavaScript

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

用于使用较长字节序列中的位子序列来形成索引的情况，例如在 [哈希数组映射trie](https://en.wikipedia.org/wiki/Hash_array_mapped_trie) 其中树结构的每个级别上的索引是由键的散列的增量块组成的。

### 例子

```js
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`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/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](http://www.apache.org/licenses/LICENSE-2.0)

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

## 常见问题

### 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 和提交记录判断。

