HCC2DF 容器格式
HCC2DF 是 API 默认使用的二进制容器格式(传入 structured: false 可跳过)。它会为原始负载附加文件名,并在合适时使用 zlib 压缩。
二进制布局
所有多字节字段均采用大端序。该容器是无填充的平面字节序列。
| 偏移 | 大小(字节) | 字段 | 说明 |
|---|---|---|---|
| 0 | 6 | magic | ASCII 字符串 HCC2DF。始终存在,供解码器识别格式。 |
| 6 | 1 | version | 格式版本。目前始终为 0x01。 |
| 7 | 1 | compression | 压缩标志。0x00 = 未压缩,0x01 = zlib-deflate 压缩。 |
| 8 | 1 | nameLen | 后续 UTF-8 文件名的字节长度。有效范围:1–127。 |
| 9 | nameLen | name | UTF-8 编码的文件名,不允许路径分隔符和空字节。 |
| 9 + nameLen | 剩余部分 | content | 负载字节。如果 compression == 0x01,请使用 inflate / zlib.decompress 解压。 |
压缩规则
编码器会尝试对每个负载使用 zlib 压缩。只有当压缩后的结果小于原始大小的 90% 时,才会采用压缩形式。
文件名限制
- UTF-8 编码长度为 1–127 字节。
- 不能包含路径分隔符(/ 或 \)。
- 不能包含空字节(0x00)。
这些是格式级约束。API 会在把不合规的 inputName 交给编码器前先进行规范化处理。
示例 — 十六进制转储
以下示例展示了将 ASCII 字符串 Hello 以 note.txt 保存、且未压缩时的容器内容:
48 43 43 32 44 46 — magic "HCC2DF" 01 — version 1 00 — uncompressed 08 — filename length: 8 bytes 6e 6f 74 65 2e 74 78 74 — "note.txt" 48 65 6c 6c 6f — content: "Hello"