Expand description
Binary text encoding and decoding with support for SIMD (AVX2 and SSSE3) with good fallback performance.
The main idea of this crate is to have a zero copy binary deserialization for text formats.
§How it works
Alignment can’t be guaranteed in a text format, so no matter what the data will need
to be re-aligned while decoding, if the required alignment is N
maximum amount
of offset need to move the bytes is less than N
thus by providing an start padding
in the binary encoded text of N - 1
it’s possible to align the data up to N
.
Quick note this crate will only accept padding equal or grater than N
, because
it’s a bit cheap to do this way.
// Padding of 8 (suppose it was read form a file)
let mut hex = "--------a1f7d5e8d14f0f76".to_string();
unsafe {
// Decode with padding of 8 and alignment of 8
let slice = bintext::hex::decode_aligned(&mut hex, 8, 8).unwrap();
// Data is aligned so you can safely do this:
let slice: &[u64] = std::slice::from_raw_parts(
slice.as_ptr() as *const _,
slice.len() / std::mem::size_of::<u64>()
);
}
Modules§
- hex
- Hex encoding and decoding