#bit #bits #byte-slice #bitstream #byte-buffer #data-stream #sequence

no-std bitreader

BitReader helps reading individual bits from a slice of bytes. You can read "unusual" numbers of bits from the byte slice, for example 13 bits at once. The reader internally keeps track of position within the buffer.

11 releases

Uses old Rust 2015

0.3.8 Sep 5, 2023
0.3.7 Apr 26, 2023
0.3.6 Apr 3, 2022
0.3.5 Jan 6, 2022
0.1.0 Aug 9, 2016

#15 in Parser tooling

Download history 5091/week @ 2024-01-06 4560/week @ 2024-01-13 4567/week @ 2024-01-20 4150/week @ 2024-01-27 3546/week @ 2024-02-03 4038/week @ 2024-02-10 4343/week @ 2024-02-17 4022/week @ 2024-02-24 5103/week @ 2024-03-02 4351/week @ 2024-03-09 4140/week @ 2024-03-16 4301/week @ 2024-03-23 4414/week @ 2024-03-30 4805/week @ 2024-04-06 4880/week @ 2024-04-13 4038/week @ 2024-04-20

18,649 downloads per month
Used in 60 crates (24 directly)

MIT/Apache

32KB
508 lines

BitReader

BitReader is a helper type to extract strings of bits from a slice of bytes.

Published Package Documentation Build Status

Here is how you read first a single bit, then three bits and finally four bits from a byte buffer:

use bitreader::BitReader;

let slice_of_u8 = &[0b1000_1111];
let mut reader = BitReader::new(slice_of_u8);

// You obviously should use try! or some other error handling mechanism here
let a_single_bit = reader.read_u8(1).unwrap(); // 1
let more_bits = reader.read_u8(3).unwrap(); // 0
let last_bits_of_byte = reader.read_u8(4).unwrap(); // 0b1111

You can naturally read bits from longer buffer of data than just a single byte.

As you read bits, the internal cursor of BitReader moves on along the stream of bits. Big endian format is assumed when reading the multi-byte values. BitReader supports reading maximum of 64 bits at a time (with read_u64).

License

Licensed under the Apache License, Version 2.0 or the MIT license, at your option.

Dependencies