2个不稳定版本
0.2.0 | 2020年4月5日 |
---|---|
0.1.0 | 2019年2月26日 |
#1340 in 编码
每月下载量77
在ahuff中使用
34KB
558 行
endio_bit
位级读取和写入
std::io::{Read, Write}
仅允许在字节级别上进行读取和写入。当与使用单个位或大小不是8位倍数的结构的协议一起工作时,这并不足够。此crate提供了读取和写入的包装器,使任何实现Read
/Write
的对象都可以进行位级I/O。
包装器模仿std::io::BufReader
和std::io::BufWriter
,因此其语义和接口应该熟悉且健壮。
此crate是一个专注于位级I/O的最小化低级抽象。如果您还需要字节级I/O或(反)序列化支持,则建议与endio
一起使用此crate。但是,此crate完全独立于endio
,并且可以在仅需要带有位支持的std::io的情况下单独使用。
此crate的目标
- 读取和写入单个位。
- 读取和写入不是8的倍数的位。
- 即使在底层对象进行了位移的情况下也能进行读取和写入。
- 支持位字节序转换/区分。
此crate的非目标
与其他 crate 的比较
位级 I/O 是一个常见问题,在 crates.io 上有许多 crate 试图提供解决方案。然而,我尚未找到一个完全令人满意的解决方案。以下是相关 crate 的列表以及它们与这个 crate 的不同之处
-
av-bitstream
- 包含(反)序列化和字节序。不支持位级写入。未提供文档。 -
bit-io
- 不实现std::io::{Read, Write}
。不支持位序。未提供文档。 -
bitio
- 不支持写入。不支持位序。 -
bitstream
、bitstream_reader
、bitter
- 包含(反)序列化和字节序。不支持写入。 -
bitstream-io
- 包含(反)序列化和字节序。由于某种原因,包含了霍夫曼树。不实现std::io::{Read, Write}
。 -
bitstream-rs
- 仅支持读取和写入单个位。不实现std::io::{Read, Write}
。 -
bitreader
- 仅支持读取。包含在强制大端模式下的反序列化,不支持小端模式。
因此,目前库的情况还有改进的空间,我希望通过这个 crate 来解决这个问题。