file_utils/conversions/
u.rs1
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}