#byte-array #endianness #byte #binary #binary-data #data-file

data-view

该库提供了在字节数组中读取和写入数据的视图

12 个稳定版本 (4 个主要版本)

5.1.0 2022年3月20日
5.0.0 2022年3月12日
4.2.0 2022年3月12日
3.0.0 2022年3月6日
0.1.0 2022年1月11日

#31 in #endianness

Download history 18/week @ 2024-03-10 27/week @ 2024-03-31

每月下载量 52 次

Apache-2.0

13KB
164

文档

此库提供了在字节数组中读取和写入数据的视图。

它还可以在 [no_std] 环境中工作。

默认情况下,此库使用小端作为默认的字节序。但您可以通过在功能标志中使用 BE(用于大端)或 NE(用于本地端)来覆盖字节序。

例如,如果您想使用大端:

[dependencies]
data-view = { version = "5", features = ["BE"] }

示例

将此添加到项目的 Cargo.toml 文件中。

[dependencies]
data-view = "5"

DataView

use data_view::DataView;

let mut view = DataView::new([0; 8]);

view.write(12_u16);
view.write(34_u16);
view.write(5678_u32);

view.offset = 0;

assert_eq!(view.read::<u16>(), Some(12));
assert_eq!(view.read::<u16>(), Some(34));
assert_eq!(view.read::<u32>(), Some(5678));

视图

use data_view::View;

let mut buf = [0; 8];

buf.write_at(0, 42_u16);
buf.write_at(2, 123_u32);

assert_eq!(buf.read_at::<u16>(0), Some(42));
assert_eq!(buf.read_at::<u32>(2), Some(123));

替代方案

有许多替代库,

但我不喜欢这些库的 API。它们有大量的读取和写入数据的功能。例如,read_u16read_u32write_i64 等...

幸运的是,Rust 支持 Generics 函数,这就是这个库存在的原因。

无运行时依赖项

功能