#endianness #little-endian #big-endian #byte #binary #binary-data

byteordered

具有隐式字节序意识的读写数据抽象

9个版本 (5个重大更新)

使用旧的Rust 2015

0.6.0 2021年8月3日
0.5.0 2019年12月2日
0.4.1 2019年11月26日
0.4.0 2019年1月15日
0.1.0 2018年11月22日

#691 in 编码

Download history 2827/week @ 2024-03-14 2810/week @ 2024-03-21 2647/week @ 2024-03-28 2374/week @ 2024-04-04 3350/week @ 2024-04-11 3366/week @ 2024-04-18 3229/week @ 2024-04-25 3997/week @ 2024-05-02 5463/week @ 2024-05-09 14877/week @ 2024-05-16 17723/week @ 2024-05-23 28439/week @ 2024-05-30 20718/week @ 2024-06-06 14746/week @ 2024-06-13 8141/week @ 2024-06-20 5299/week @ 2024-06-27

56,072 每月下载量
用于 46 个crate (15个直接使用)

MIT/Apache

77KB
1K SLoC

byteordered

Latest Version CI Status Minimum Rust Version 1.41.1 dependency status

用于以某些字节序读取和写入数据的库。

为什么还需要另一个数据解析crate

虽然 byteorder 在Rust生态系统中被广泛使用,但它依赖于无意义的零构造类型来声明预期的字节序。因此,它缺乏在编译时未知端序的情况下读取和写入数据的构造。例如,有些文件格式的编码可能是小端序或大端序。

此外,一些用户觉得在每个读写方法调用中添加类型参数过于冗长且不美观。

而不是构建另一个新库,这个crate旨在提供对 byteorder 的替代公共API,使其适合这种特定情况,同时保留其熟悉性和核心功能。

使用

以下是一个示例。有关更多信息,请参阅文档

use byteordered::{ByteOrdered, Endianness};

let mut rd = ByteOrdered::le(get_data_source()?);
// read 1st byte
let b1 = rd.read_u8()?;
// choose to read the following data in Little Endian if it's 0,
// otherwise read in Big Endian
let endianness = Endianness::le_iff(b1 != 0);
let mut rd = rd.into_endianness(endianness);
let value: u32 = rd.read_u32()?;

许可证

根据以下之一许可

任选其一。

除非你明确说明,否则根据Apache-2.0许可证定义,你提交的任何有意包含在作品中的贡献,都将根据上述方式双重许可,不得附加任何其他条款或条件。

依赖项

~120KB