#binary-file #file-format #header #binary-data #file #binary-format #reading

snowbinary

基于头部,用于写入和读取具有自身格式的二进制文件的系统

3 个不稳定版本

0.4.0 2024年3月27日
0.3.1 2023年11月21日
0.3.0 2023年2月10日
0.2.0 2021年12月10日
0.0.0 2021年4月16日

#397文件系统

Download history 4/week @ 2024-07-03

208 每月下载量

MIT/Apache

27KB
477

雪二进制

Rust Checks Rust Build and Test Rust Build, Test, and Release Crates.io docs.rs rustc-msrv

一个基本的基于头部的二进制文件格式,写入器和读取器。

基本示例

{
    let info = SnowBinInfo::default();    

    let writer = SnowBinWriter::new(info, PATH as PathBuf)?;
    writer.write("Header", DATA as &[u8])?;
} // File is flushed when writer.close() is called or when writer is dropped.

{
    let reader = SnowBinReader::new()?;
    reader.read("Header")?; // Returns data has Vec<u8>
}

二进制格式(由本版本支持)

规范 2

  • 默认最大头部大小:8 字节。

  • 默认最大数据大小:u64。

  • 以 "SNOW_BIN" 为首的 8 字节头部开始。

  • 然后是显示雪二进制版本的 8 字节。 (规范版本) (u64)

  • 然后是显示最大头部大小的 4 字节。 (至少 8 字节,最大为 u32::MAX 字节) (u32)

  • 然后是显示最大数据大小的 1 字节。 (u8::MAX, u16::MAX, u32::MAX, u64::MAX) (u8)

  • 然后写入数据

    • MAX_HEADER_SIZE 的头部。 (没有冲突的头部名称。写入器或读取器都不会进行检查。)
    • MAX_DATA_SIZE 的大小。
    • 数据。
    • 重复直到 /。
  • 以 "SNOW_END" 为结束的 MAX_HEADER_SIZE 头部。

  • 32 字节验证哈希。 (使用 blake3)

依赖项

~1.5MB
~39K SLoC