# @codedread/bitjs 中文文档

规范地址：https://npmcn.com/package/%40codedread/bitjs/

版本：1\.2\.6
npm 元数据更新时间：2026-03-19T04:15:54.375Z
中文译文更新时间：2026-11-10T06:57:37.187Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40codedread/bitjs
原文对照：https://npmcn.com/package/%40codedread/bitjs/?lang=original
项目主页：https://github.com/codedread/bitjs
源码仓库：https://github.com/codedread/bitjs

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

- 包体积（解压后）：719 kB，127 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2020-04-03T06:59:07.397Z
- 最新版本发布：2026-03-19T04:15:54.261Z
- 近 30 天下载量：2582（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：26（近 12 个月 1 个）

## 中文简介

JavaScript 二进制工具

## 安装

```sh
npm install @codedread/bitjs
```

也可以使用：`pnpm add @codedread/bitjs`、`yarn add @codedread/bitjs`、`bun add @codedread/bitjs`

## README

[![Node.js CI](https://github.com/codedread/bitjs/actions/workflows/node.js.yml/badge.svg)](https://github.com/codedread/bitjs/actions/workflows/node.js.yml)

# bitjs: JavaScript 二进制工具

## 导言

一套无依赖的JavaScript模块,用于JS中的二进制数据(使用 [已键入阵列](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray)) (中文(简体) ). 包括:

-   bitjs/archive: 在JavaScript中解压缩文件(unzip, unrar, untar, gunzip), 执行为 支持的Web Workers 允许在流畅时进行渐进式无存档.
-   bitjs/codecs:在ISO RFC6381 MIME 类型字符串中获取介质容器的编码信息.
-   bitjs/file:从二进制签名中检测出文件的类型.
-   bitjs/图像:解析GIF,JPEG,PNG. 将WebP转换为PNG或JPEG.
-   bitjs/io:用于解释二进制数据的低等类(BitStream, ByteStream). 譬如说, 一次读取或偷看 N 位点.

## 安装

使用您最喜欢的软件包管理器安装, 软件包注册于 `@codedread/bitjs`。 。 。 .

```bash
npm install @codedread/bitjs
```

或者说

```bash
yarn add @codedread/bitjs
```

### 节点常见JS/ESM

这个模块是一个ES模块. 如果您的项目使用 CommunityJS 模块,则使用起来会有点狡猾. 例如,如果一个 TypeScript 工程编译到 CommunityJS , 它将尝试转出导入 输入需要的语句,该语句将中断。 解决这个问题(不幸)是要更新您的 tsconfig.json: (英语)

```json
 "moduleResolution": "Node16",
```

并使用动态导入 :

```javascript
const { getFullMIMEString } = await import('@codedread/bitjs');
```

## 软件包

### bitjs.archive (英语)

此软件包包括用于解压和压缩流行存档中的二进制数据的对象 格式(zip、rar、tar、gzip)。 以下是一个简单的例子:

#### 减压

```javascript
import { Unrarrer } from './bitjs/archive/decompress.js';
const unrar = new Unrarrer(rarFileArrayBuffer);
unrar.addEventListener('extract', (e) => {
  const {filename, fileData} = e.unarchivedFile;
  console.log(`Extracted ${filename} (${fileData.byteLength} bytes)`);
  // Do something with fileData...
});
unrar.addEventListener('finish', () => console.log('Done'));
unrar.start();
```

详情和实例见 [aPI 页面](https://npmcn.com/package/%40codedread/bitjs/docs/bitjs.archive.md)。 。 。 .

### bitjs.codecs (英语)

这个包包括处理媒体文件的代码(audio/video). 它有助于得出 ISO RFC6381 MIME类型字符串,包括解码器信息. 目前支持一个有限的子集 mP4和WEBM 组合键.

如何使用 :

-   首先,在您的系统中安装ffprobe(ffmpeg) .
-   然后说:

```javascript

import { getFullMIMEString } from 'bitjs/codecs/codecs.js';
/**
 * @typedef {import('bitjs/codecs/codecs.js').ProbeInfo} ProbeInfo
 */

const cmd = 'ffprobe -show_format -show_streams -print_format json -v quiet foo.mp4';
exec(cmd, (error, stdout) => {
  /** @type {ProbeInfo} */
  const info = JSON.parse(stdout);
  // 'video/mp4; codecs="avc1.4D4028, mp4a.40.2"'
  const contentType = getFullMIMEString(info);
  ...
});
```

### bitjs.file (英语)

此包包括处理文件的代码. 它包括一个嗅探器,它能检测出 file, 给定了 Array 缓冲器 .

```javascript
import { findMimeType } from './bitjs/file/sniffer.js';
const mimeType = findMimeType(someArrayBuffer);
```

### bitjs.image 图像

这个包包括处理图像文件的代码. 它包括低级别、基于事件 gIF, JPEG 和 PNG 图像的解析器 .

它还包括一个将 WebP 图像转换为 替代光栅图形格式(PNG/JPG),尽管后一模块已贬值,现在 WebP 图像在所有浏览器中都得到了很好的支持.

#### GIF 解析器

```javascript
import { GifParser } from './bitjs/image/parsers/gif.js'

const parser = new GifParser(someArrayBuffer);
parser.onApplicationExtension(evt => {
  const appId = evt.detail.applicationIdentifier;
  const appAuthCode = new TextDecoder().decode(evt.detail.applicationAuthenticationCode);
  if (appId === 'XMP Data' && appAuthCode === 'XMP') {
    /** @type {Uint8Array} */
    const appData = evt.detail.applicationData;
    // Do something with appData (parse the XMP).
  }
});
parser.start();
```

#### JPEG 解析器

```javascript
import { JpegParser } from './bitjs/image/parsers/jpeg.js'
import { ExifTagNumber } from './bitjs/image/parsers/exif.js';

const parser = new JpegParser(someArrayBuffer)
    .onApp1Exif(evt => console.log(evt.detail.get(ExifTagNumber.IMAGE_DESCRIPTION).stringValue));
await parser.start();
```

#### PNG 解析器

```javascript
import { PngParser } from './bitjs/image/parsers/png.js'
import { ExifTagNumber } from './bitjs/image/parsers/exif.js';

const parser = new PngParser(someArrayBuffer);
    .onExifProfile(evt => console.log(evt.detail.get(ExifTagNumber.IMAGE_DESCRIPTION).stringValue))
    .onTextualData(evt => console.dir(evt.detail));
await parser.start();
```

#### WebP 转换器

```javascript
import { convertWebPtoPNG, convertWebPtoJPG } from './bitjs/image/webp-shim/webp-shim.js';
// convertWebPtoPNG() takes in an ArrayBuffer containing the bytes of a WebP
// image and returns a Promise that resolves with an ArrayBuffer containing the
// bytes of an equivalent PNG image.
convertWebPtoPNG(webpBuffer).then(pngBuf => {
  const pngUrl = URL.createObjectURL(new Blob([pngBuf], {type: 'image/png'}));
  someImgElement.setAttribute(src, pngUrl);
});
```

### bitjs.io (英语)

此软件包包括用于读取和写入比特和字节级二进制数据的流对象 : BitStream, Byte Stream (英语).

```javascript
import { BitStream } from './bitjs/io/bitstream.js';
const bstream = new BitStream(someArrayBuffer, true /** most-significant-bit-to-least */ );
const crc = bstream.readBits(12); // Read in 12 bits as CRC. Advance pointer.
const flagbits = bstream.peekBits(6); // Look ahead at next 6 bits. Do not advance pointer.
```

详情和实例见 [aPI 页面](https://npmcn.com/package/%40codedread/bitjs/docs/bitjs.io.md)。 。 。 .

## 参考文献

-   [解冻](http://codedread.github.io/bitjs/docs/unrar.html): 正在进行中的工作说明 RAR文件格式.

## 历史

这个项目来自我的另一个项目, [kthoom 语录](https://github.com/codedread/kthoom) 联合国 浏览器中执行的漫画阅读器). 此寄存器被自动导出 [我在GoogleCode上的原始仓库](https://code.google.com/p/bitjs) 并经历了 自那时起发生了相当大的变化和改进.

## 常见问题

### @codedread/bitjs 是什么？

JavaScript 二进制工具

### 如何安装 @codedread/bitjs？

在项目目录运行 npm install @codedread/bitjs，或使用 pnpm add / yarn add / bun add。

### @codedread/bitjs 支持 TypeScript 吗？

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

### @codedread/bitjs 支持 ESM 还是 CommonJS？

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

### @codedread/bitjs 可以商用吗？

@codedread/bitjs 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @codedread/bitjs 的下载量有多少？

根据 npm 官方下载统计，@codedread/bitjs 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,582 次，日均约 86 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @codedread/bitjs 还在维护吗？

最新版本 1\.2\.6 发布于 2026/03/19（7 个月前）；至今共发布 26 个版本，其中过去 12 个月发布了 1 个；首次发布于 2020/04/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

