1 个不稳定版本
使用旧的 Rust 2015
0.0.2 | 2014年11月21日 |
---|
#5 in #gpx
11KB
265 行
Rust gpx 读取器
### 读取使用 BCFZ 压缩的 GuitarPro 6 gpx 文件。
为了解压 BCFZ 文件,您需要实现一个 BitStream 读取器,能够从流中逐位读取。
格式本身很简单:文件以一个 BCFZ 标头开始,后面跟着一个 32 位整数,指定预期的解压数据长度。文件的其余部分由两种类型的数据块(未压缩的原始数据和压缩数据)组成。从位流中读取 1 位。如果位是 0,则紧跟着的是未压缩的数据块
- 接下来的 2 位是字节的长度。
- 从位流中读取长度字节的字节数。
- 将这些字节放入解压数据缓冲区中。
如果位是 1,则接下来的是压缩数据块
- 接下来的 4 位是字大小。
- 读取字大小位的位数以获取偏移量。
- 读取字大小位的位数以获取长度。
- 从偏移量(从解压数据缓冲区当前位置的末尾)读取长度字节的字节数。
- 将这些字节放入解压数据缓冲区中。
有时文件可能在您的数据缓冲区达到预期的解压数据长度之前就结束了,这很可能意味着文件已正确读取。