file-utils 0.1.5

Convenience wrappers for file I/O, mostly around binary operations.
Documentation


#[cfg(target_endian="big")]
pub fn bytes_to_u16(x: &[u8; 2]) -> u16
{
    ((x[0] as u16) <<  8) +
    ((x[1] as u16) <<  0)
}

#[cfg(target_endian="little")]
pub fn bytes_to_u16(x: &[u8; 2]) -> u16
{
    ((x[1] as u16) <<  8) +
    ((x[0] as u16) <<  0)
}

#[cfg(target_endian="big")]
pub fn bytes_to_u32(x: &[u8; 4]) -> u32
{
    ((x[0] as u32) << 24) +
    ((x[1] as u32) << 16) +
    ((x[2] as u32) <<  8) +
    ((x[3] as u32) <<  0)
}

#[cfg(target_endian="little")]
pub fn bytes_to_u32(x: &[u8; 4]) -> u32
{
    ((x[3] as u32) << 24) +
    ((x[2] as u32) << 16) +
    ((x[1] as u32) <<  8) +
    ((x[0] as u32) <<  0)
}

#[cfg(target_endian="big")]
pub fn bytes_to_u64(x: &[u8; 8]) -> u64
{
    ((x[0] as u64) << 56) +
    ((x[1] as u64) << 48) +
    ((x[2] as u64) << 40) +
    ((x[3] as u64) << 32) +
    ((x[4] as u64) << 24) +
    ((x[5] as u64) << 16) +
    ((x[6] as u64) <<  8) +
    ((x[7] as u64) <<  0)
}

#[cfg(target_endian="little")]
pub fn bytes_to_u64(x: &[u8; 8]) -> u64
{
    ((x[7] as u64) << 56) +
    ((x[6] as u64) << 48) +
    ((x[5] as u64) << 40) +
    ((x[4] as u64) << 32) +
    ((x[3] as u64) << 24) +
    ((x[2] as u64) << 16) +
    ((x[1] as u64) <<  8) +
    ((x[0] as u64) <<  0)
}



#[cfg(target_endian="big")]
pub fn u16_to_bytes(x: u16) -> [u8; 2]
{
    [
    	((x >>  8) & 0xff) as u8,
    	((x >>  0) & 0xff) as u8
	]
}

#[cfg(target_endian="little")]
pub fn u16_to_bytes(x: u16) -> [u8; 2]
{
    [
		((x >>  0) & 0xff) as u8,
    	((x >>  8) & 0xff) as u8
	]
}

#[cfg(target_endian="big")]
pub fn u32_to_bytes(x: u32) -> [u8; 4]
{
    [
		((x >> 24) & 0xff) as u8,
    	((x >> 16) & 0xff) as u8,
    	((x >>  8) & 0xff) as u8,
    	((x >>  0) & 0xff) as u8
	]
}

#[cfg(target_endian="little")]
pub fn u32_to_bytes(x: u32) -> [u8; 4]
{
    [
		((x >>  0) & 0xff) as u8,
    	((x >>  8) & 0xff) as u8,
    	((x >> 16) & 0xff) as u8,
    	((x >> 24) & 0xff) as u8
	]
}

#[cfg(target_endian="big")]
pub fn u64_to_bytes(x: u64) -> [u8; 8]
{
    [
		((x >> 56) & 0xff) as u8,
    	((x >> 48) & 0xff) as u8,
    	((x >> 40) & 0xff) as u8,
    	((x >> 32) & 0xff) as u8,
		((x >> 24) & 0xff) as u8,
    	((x >> 16) & 0xff) as u8,
    	((x >>  8) & 0xff) as u8,
    	((x >>  0) & 0xff) as u8
	]
}

#[cfg(target_endian="little")]
pub fn u64_to_bytes(x: u64) -> [u8; 8]
{
    [
		((x >>  0) & 0xff) as u8,
    	((x >>  8) & 0xff) as u8,
    	((x >> 16) & 0xff) as u8,
    	((x >> 24) & 0xff) as u8,
		((x >> 32) & 0xff) as u8,
    	((x >> 40) & 0xff) as u8,
    	((x >> 48) & 0xff) as u8,
    	((x >> 56) & 0xff) as u8
	]
}