file_utils/conversions/
u.rs

1
2
3#[cfg(target_endian="big")]
4pub fn bytes_to_u16(x: &[u8; 2]) -> u16
5{
6    ((x[0] as u16) <<  8) +
7    ((x[1] as u16) <<  0)
8}
9
10#[cfg(target_endian="little")]
11pub fn bytes_to_u16(x: &[u8; 2]) -> u16
12{
13    ((x[1] as u16) <<  8) +
14    ((x[0] as u16) <<  0)
15}
16
17#[cfg(target_endian="big")]
18pub fn bytes_to_u32(x: &[u8; 4]) -> u32
19{
20    ((x[0] as u32) << 24) +
21    ((x[1] as u32) << 16) +
22    ((x[2] as u32) <<  8) +
23    ((x[3] as u32) <<  0)
24}
25
26#[cfg(target_endian="little")]
27pub fn bytes_to_u32(x: &[u8; 4]) -> u32
28{
29    ((x[3] as u32) << 24) +
30    ((x[2] as u32) << 16) +
31    ((x[1] as u32) <<  8) +
32    ((x[0] as u32) <<  0)
33}
34
35#[cfg(target_endian="big")]
36pub fn bytes_to_u64(x: &[u8; 8]) -> u64
37{
38    ((x[0] as u64) << 56) +
39    ((x[1] as u64) << 48) +
40    ((x[2] as u64) << 40) +
41    ((x[3] as u64) << 32) +
42    ((x[4] as u64) << 24) +
43    ((x[5] as u64) << 16) +
44    ((x[6] as u64) <<  8) +
45    ((x[7] as u64) <<  0)
46}
47
48#[cfg(target_endian="little")]
49pub fn bytes_to_u64(x: &[u8; 8]) -> u64
50{
51    ((x[7] as u64) << 56) +
52    ((x[6] as u64) << 48) +
53    ((x[5] as u64) << 40) +
54    ((x[4] as u64) << 32) +
55    ((x[3] as u64) << 24) +
56    ((x[2] as u64) << 16) +
57    ((x[1] as u64) <<  8) +
58    ((x[0] as u64) <<  0)
59}
60
61
62
63#[cfg(target_endian="big")]
64pub fn u16_to_bytes(x: u16) -> [u8; 2]
65{
66    [
67    	((x >>  8) & 0xff) as u8,
68    	((x >>  0) & 0xff) as u8
69	]
70}
71
72#[cfg(target_endian="little")]
73pub fn u16_to_bytes(x: u16) -> [u8; 2]
74{
75    [
76		((x >>  0) & 0xff) as u8,
77    	((x >>  8) & 0xff) as u8
78	]
79}
80
81#[cfg(target_endian="big")]
82pub fn u32_to_bytes(x: u32) -> [u8; 4]
83{
84    [
85		((x >> 24) & 0xff) as u8,
86    	((x >> 16) & 0xff) as u8,
87    	((x >>  8) & 0xff) as u8,
88    	((x >>  0) & 0xff) as u8
89	]
90}
91
92#[cfg(target_endian="little")]
93pub fn u32_to_bytes(x: u32) -> [u8; 4]
94{
95    [
96		((x >>  0) & 0xff) as u8,
97    	((x >>  8) & 0xff) as u8,
98    	((x >> 16) & 0xff) as u8,
99    	((x >> 24) & 0xff) as u8
100	]
101}
102
103#[cfg(target_endian="big")]
104pub fn u64_to_bytes(x: u64) -> [u8; 8]
105{
106    [
107		((x >> 56) & 0xff) as u8,
108    	((x >> 48) & 0xff) as u8,
109    	((x >> 40) & 0xff) as u8,
110    	((x >> 32) & 0xff) as u8,
111		((x >> 24) & 0xff) as u8,
112    	((x >> 16) & 0xff) as u8,
113    	((x >>  8) & 0xff) as u8,
114    	((x >>  0) & 0xff) as u8
115	]
116}
117
118#[cfg(target_endian="little")]
119pub fn u64_to_bytes(x: u64) -> [u8; 8]
120{
121    [
122		((x >>  0) & 0xff) as u8,
123    	((x >>  8) & 0xff) as u8,
124    	((x >> 16) & 0xff) as u8,
125    	((x >> 24) & 0xff) as u8,
126		((x >> 32) & 0xff) as u8,
127    	((x >> 40) & 0xff) as u8,
128    	((x >> 48) & 0xff) as u8,
129    	((x >> 56) & 0xff) as u8
130	]
131}