#[cfg(test)]
mod tests;
const BYTEMASK_32: u32 = 0b11111111;
const BYTEMASK_16: u16 = 0b11111111;
pub fn two_byte_extraction(buffer: &[u8], idx: usize) -> u16
{
two_byte_combine(buffer[idx], buffer[idx + 1])
}
pub fn two_byte_combine(item_1: u8, item_2: u8) -> u16
{
((item_1 as u16) << 8) | (item_2 as u16)
}
pub fn two_byte_split(num: u16) -> (u8, u8)
{
((num >> 8) as u8,
(num & BYTEMASK_16) as u8)
}
pub fn four_byte_split(num: u32) -> (u8, u8, u8, u8)
{
((num >> 24) as u8,
((num >> 16) & BYTEMASK_32) as u8,
((num >> 8) & BYTEMASK_32) as u8,
(num & BYTEMASK_32) as u8)
}
pub fn four_byte_combine(item_1: u8, item_2: u8, item_3: u8, item_4: u8) -> u32
{
((item_1 as u32) << 24) |
((item_2 as u32) << 16) |
((item_3 as u32) << 8) |
item_4 as u32
}
pub fn apply_split_bytes(buffer: &mut [u8], value: u16, index: usize)
{
let val = two_byte_split(value);
buffer[index] = val.0;
buffer[index + 1] = val.1;
}
pub fn push_split_bytes(buffer: &mut Vec<u8>, value: u16)
{
let val = two_byte_split(value);
buffer.push(val.0);
buffer.push(val.1);
}