Maraiah/src/durandal/bin.rs

25 lines
1.0 KiB
Rust

//! Binary data conversion utilities.
pub type Ident = [u8; 4];
pub fn b_iden(b: &[u8]) -> Ident {[b[0], b[1], b[2], b[3]]}
pub fn b_u32l(b: &[u8]) -> u32 {b[3] as (u32) << 24 | b[2] as (u32) << 16 |
b[1] as (u32) << 8 | b[0] as u32}
pub fn b_u16l(b: &[u8]) -> u16 {b[1] as (u16) << 8 | b[0] as u16}
pub fn b_u32b(b: &[u8]) -> u32 {b[0] as (u32) << 24 | b[1] as (u32) << 16 |
b[2] as (u32) << 8 | b[3] as u32}
pub fn b_u16b(b: &[u8]) -> u16 {b[0] as (u16) << 8 | b[1] as u16}
pub fn b_i32l(b: &[u8]) -> i32 {b_u32l(b) as i32}
pub fn b_i16l(b: &[u8]) -> i16 {b_u16l(b) as i16}
pub fn b_i32b(b: &[u8]) -> i32 {b_u32b(b) as i32}
pub fn b_i16b(b: &[u8]) -> i16 {b_u16b(b) as i16}
pub fn d_u32b(n: u32) -> [u8; 4] {[(n >> 24) as u8, (n >> 16) as u8,
(n >> 8) as u8, (n >> 0) as u8]}
pub fn d_u16b(n: u16) -> [u8; 2] {[(n >> 8) as u8, (n >> 0) as u8]}
pub fn d_i32b(n: i32) -> [u8; 4] {d_u32b(n as u32)}
pub fn d_i16b(n: i16) -> [u8; 2] {d_u16b(n as u16)}
// EOF