Revision control
Copy as Markdown
Other Tools
use core::convert::TryInto;
// Little Endian
#[inline]
pub fn load16_le(bytes: &[u8]) -> u16 {
u16::from_le_bytes(bytes[0..2].try_into().unwrap())
}
#[inline]
pub fn store16_le(bytes: &mut [u8], x: u16) {
bytes[0..2].copy_from_slice(&u16::to_le_bytes(x))
}
#[inline]
pub fn load32_le(bytes: &[u8]) -> u32 {
u32::from_le_bytes(bytes[0..4].try_into().unwrap())
}
#[inline]
pub fn store32_le(bytes: &mut [u8], x: u32) {
bytes[0..4].copy_from_slice(&u32::to_le_bytes(x))
}
#[inline]
pub fn load64_le(bytes: &[u8]) -> u64 {
u64::from_le_bytes(bytes[0..8].try_into().unwrap())
}
#[inline]
pub fn store64_le(bytes: &mut [u8], x: u64) {
bytes[0..8].copy_from_slice(&u64::to_le_bytes(x))
}
// Big Endian
#[inline]
pub fn load32_be(bytes: &[u8]) -> u32 {
u32::from_be_bytes(bytes[0..4].try_into().unwrap())
}
#[inline]
pub fn store32_be(bytes: &mut [u8], x: u32) {
bytes[0..4].copy_from_slice(&u32::to_be_bytes(x))
}
#[inline]
pub fn load64_be(bytes: &[u8]) -> u64 {
u64::from_be_bytes(bytes[0..8].try_into().unwrap())
}
#[inline]
pub fn store64_be(bytes: &mut [u8], x: u64) {
bytes[0..8].copy_from_slice(&u64::to_be_bytes(x))
}
#[inline]
pub fn load128_be(bytes: &[u8]) -> u128 {
u128::from_be_bytes(bytes[0..16].try_into().unwrap())
}
#[inline]
pub fn store128_be(bytes: &mut [u8], x: u128) {
bytes[0..16].copy_from_slice(&u128::to_be_bytes(x))
}