file-utils 0.1.5

Convenience wrappers for file I/O, mostly around binary operations.
Documentation
#[cfg(target_endian="big")]
pub fn bytes_to_i16(x: &[u8; 2]) -> i16
{
    ((x[0] as i16) <<  8) +
    ((x[1] as i16) <<  0)
}

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

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

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

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

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


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

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

#[cfg(target_endian="big")]
pub fn i32_to_bytes(x: i32) -> [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 i32_to_bytes(x: i32) -> [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 i64_to_bytes(x: i64) -> [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 i64_to_bytes(x: i64) -> [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
	]
}