头部格式
每个 .ttp 文件头部固定为 26 字节。
字段表
| 偏移 | 大小 | 类型 | 说明 |
|---|---|---|---|
| 0 | 4 | bytes | 魔数 TTP\x01(0x54 0x54 0x50 0x01) |
| 4 | 4 | uint32 LE | 版本号,当前为 1 |
| 8 | 1 | bitfield | 配置字节 0(见下方位域) |
| 9 | 1 | uint8 | 保留字节,当前必须为 0 |
| 10 | 2 | uint16 LE | 当前卷序号,从 1 开始 |
| 12 | 2 | uint16 LE | 总卷数,最小为 1 |
| 14 | 4 | uint32 LE | 本卷数据长度——后跟的置换/压缩数据的字节数 |
| 18 | 8 | bytes | 自定义配置字节,官方解析器忽略,默认全 0 |
| 26 | 头部总长 |
配置字节 0 位域
| 位 | 名称 | 说明 |
|---|---|---|
| b0 | Flat | 0 = 目录树模式(允许子目录);1 = 扁平模式(无子目录) |
| b1–b2 | Compression | 00 → LZMA(默认),01 → Brotli,10 → Deflate,11 → 保留(实现应回退为 LZMA) |
| b3 | ExtInfo | 仅当 Flat=1 有效:0 = 标准扁平,1 = 扩展扁平(64 位文件数 + ZIP64 式大小扩展) |
| b4 | HasCustom | 0 = 无自定义数据段,1 = 载荷尾部包含自定义数据段 |
| b5–b7 | 保留 | 必须为 0 |
编码示例
假设一个扁平模式、LZMA 压缩、启用了扩展信息、有自定义数据段的单卷文件:
| 字段 | 值 |
|---|---|
| Flat | 1 → bit0 = 1 |
| Compression | LZMA → bits1-2 = 00 |
| ExtInfo | 1 → bit3 = 1 |
| HasCustom | 1 → bit4 = 1 |
| config byte 0 | `1 |
