https://github.com/freaky/rust-bitrw
A Rust library for bit-level reading and writing
https://github.com/freaky/rust-bitrw
Last synced: 3 days ago
JSON representation
A Rust library for bit-level reading and writing
- Host: GitHub
- URL: https://github.com/freaky/rust-bitrw
- Owner: Freaky
- License: mit
- Created: 2018-04-17T21:18:30.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-04-22T17:35:47.000Z (about 8 years ago)
- Last Synced: 2025-12-01T00:22:16.181Z (6 months ago)
- Language: Rust
- Size: 7.81 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# bitrw [](https://travis-ci.org/Freaky/rust-bitrw)
A Rust crate for bit-level IO.
## Synopsis
extern crate bitrw;
use bitrw::{BitReader, BitWriter};
// Something implementing io::Write
let buf: Vec = Vec::new();
let mut writer = BitWriter::new(BufWriter::new(buf));
let mut bits_written = writer.write_bit(0)?;
bits_written += writer.write_bits(7, 0b100_0001)?;
bits_written += writer.write_bits(2, 0b01)?;
bits_written += writer.flush()?; // returns u64 indicating the number of bits of padding.
assert_eq!(buf, [0b0100_0001, 0b0100_0000]);
// Or io::Read, and optionally io::Seek for seeking by bit position.
let mut reader = BitReader::new(Cursor::new(writer.into_inner()));
let bit = reader.read_bit()?; // u8, 0 or 1
let rest_of_byte = reader.read_bits(7)?; // u64 of remainder.
let bits = reader.read_bits(2)?;
assert_eq!(bit, 0_u8);
assert_eq!(rest_of_byte, 0b100_0001_u64);
assert_eq!(bits, 0b01_u64);
Currently the interface can be considered unstable.