English version HERE
压缩包类型编码规则
位定义(最低位 → 高位)
| 二进制位 |
压缩类型 |
| 00000001 (bit0) |
.7z |
| 00000010 (bit1) |
.zip |
| 00000100 (bit2) |
.tar |
| 00001000 (bit3) |
.gz |
| 00010000 (bit4) |
.xz |
解析规则
最高位(最左侧bit)判定
- 如果最高位 = 1 → 从右向左解析(低位→高位)
- 如果最高位 = 0 → 从左向右解析(高位→低位)
扩展名生成
- 每个为 1 的位对应一个扩展名
- 解析顺序决定扩展名顺序:
- 从右向左:先解析的扩展名是内层压缩包
- 从左向右:先解析的扩展名是外层压缩包
注意事项:
单个类型强制要求:当只有一个压缩类型时,最高位必须为 0(例如 .7z 只能表示为 00000001,不能是 10000001)。
示例说明
| 二进制值 |
最高位 |
解析方向 |
扩展名顺序 |
最终扩展名 |
| 10001100 |
1 |
右→左 |
.tar → .gz |
.tar.gz |
| 00001100 |
0 |
左→右 |
.gz → .tar |
.gz.tar |
| 00000001 |
0 |
左→右 |
.7z |
.7z |
| 00101000 |
0 |
左→右 |
.gz → .xz |
.gz.xz |
| 10100001 |
1 |
右→左 |
.7z → .xz |
.7z.xz |
关键点
- 位顺序:扩展名的层级关系由解析方向决定(内层压缩包先解析)。
- 高位限制:单个压缩类型时最高位必须为 0,避免误触发多类型解析逻辑。
- 无效位:未定义的位(bit5-bit6)始终为 0,解析时忽略。