Skip to main content

decode

Function decode 

Source
pub fn decode(
    bytes: &[u8],
    table: &FrequencyTable,
    len: usize,
) -> Result<Vec<u32>, AnsError>
Expand description

Decode len symbols from an rANS byte stream produced by encode.

The caller must know the message length because rANS is a stream codec with no built-in end-of-message marker. Passing len = 0 is valid and returns an empty vector (the 4-byte state is still read and validated).

ยงExample

use ans::{encode, decode, FrequencyTable};

let table = FrequencyTable::from_counts(&[5, 3, 2], 14)?;
let message = [2u32, 0, 1, 0, 2];
let bytes = encode(&message, &table)?;
let recovered = decode(&bytes, &table, message.len())?;
assert_eq!(recovered, message);