3 releases (breaking)

new 0.5.0 Mar 22, 2025
0.3.0 Mar 14, 2025
0.2.0 Mar 4, 2025

#326 in Magic Beans

Download history 87/week @ 2025-02-26 116/week @ 2025-03-05 123/week @ 2025-03-12

326 downloads per month
Used in artimonist

MIT license

15KB
322 lines

Bit operations on [u8]

Usage

[u16] chunks to mnemonic indices by 11 bits.
[u8] chunks to base64 indices by 6 bits.

Examples

use nbits::{BitChunks, BitConjoin, BitIterator, ToBits};

// bit_chunks
assert_eq!(
    vec![0b1111_1111, 0b1111_1111].bit_chunks(6).collect::<Vec<u8>>(),
    vec![0b11_1111, 0b11_1111, 0b11_1100]
);
assert_eq!(
    vec![0b1111_1111; 3].bit_chunks(11).collect::<Vec<u16>>(),
    vec![0b111_1111_1111, 0b111_1111_1111, 0b110_0000_0000]
);

// bit_conjoin
assert_eq!(
    vec![0b11_1111_u8, 0b11_1111, 0b11_1111].bit_conjoin(6),
    vec![0b1111_1111, 0b1111_1111, 0b1100_0000]
);
assert_eq!(
    vec![0b1111_u16, 0b1111, 0b1111].bit_conjoin(6),
    vec![0b001111_00, 0b1111_0011, 0b1100_0000]
);

// bit_iter
assert_eq!(
    [0b1111_0000_u8].bit_iter().collect::<Vec<bool>>(),
    vec![true, true, true, true, false, false, false, false]
);

// to_bits
assert_eq!(
    vec![true, true, true, true, false, false, false, false].iter().to_bits(),
    [0b1111_0000]
);

No runtime deps