initial checkin
[rust-lightning] / src / util / byte_utils.rs
1 //TODO: Dont expose
2
3 #[inline]
4 pub fn slice_to_be16(v: &[u8]) -> u16 {
5         ((v[0] as u16) << 8*1) |
6         ((v[1] as u16) << 8*0)
7 }
8 #[inline]
9 pub fn slice_to_be32(v: &[u8]) -> u32 {
10         ((v[0] as u32) << 8*3) |
11         ((v[1] as u32) << 8*2) |
12         ((v[2] as u32) << 8*1) |
13         ((v[3] as u32) << 8*0)
14 }
15 #[inline]
16 pub fn slice_to_be64(v: &[u8]) -> u64 {
17         ((v[0] as u64) << 8*7) |
18         ((v[1] as u64) << 8*6) |
19         ((v[2] as u64) << 8*5) |
20         ((v[3] as u64) << 8*4) |
21         ((v[4] as u64) << 8*3) |
22         ((v[5] as u64) << 8*2) |
23         ((v[6] as u64) << 8*1) |
24         ((v[7] as u64) << 8*0)
25 }
26
27 #[inline]
28 pub fn be16_to_array(u: u16) -> [u8; 2] {
29         let mut v = [0; 2];
30         v[0] = ((u >> 8*1) & 0xff) as u8;
31         v[1] = ((u >> 8*0) & 0xff) as u8;
32         v
33 }
34 #[inline]
35 pub fn be32_to_array(u: u32) -> [u8; 4] {
36         let mut v = [0; 4];
37         v[0] = ((u >> 8*3) & 0xff) as u8;
38         v[1] = ((u >> 8*2) & 0xff) as u8;
39         v[2] = ((u >> 8*1) & 0xff) as u8;
40         v[3] = ((u >> 8*0) & 0xff) as u8;
41         v
42 }
43 #[inline]
44 pub fn be64_to_array(u: u64) -> [u8; 8] {
45         let mut v = [0; 8];
46         v[0] = ((u >> 8*7) & 0xff) as u8;
47         v[1] = ((u >> 8*6) & 0xff) as u8;
48         v[2] = ((u >> 8*5) & 0xff) as u8;
49         v[3] = ((u >> 8*4) & 0xff) as u8;
50         v[4] = ((u >> 8*3) & 0xff) as u8;
51         v[5] = ((u >> 8*2) & 0xff) as u8;
52         v[6] = ((u >> 8*1) & 0xff) as u8;
53         v[7] = ((u >> 8*0) & 0xff) as u8;
54         v
55 }
56
57 #[inline]
58 pub fn le64_to_array(u: u64) -> [u8; 8] {
59         let mut v = [0; 8];
60         v[0] = ((u >> 8*0) & 0xff) as u8;
61         v[1] = ((u >> 8*1) & 0xff) as u8;
62         v[2] = ((u >> 8*2) & 0xff) as u8;
63         v[3] = ((u >> 8*3) & 0xff) as u8;
64         v[4] = ((u >> 8*4) & 0xff) as u8;
65         v[5] = ((u >> 8*5) & 0xff) as u8;
66         v[6] = ((u >> 8*6) & 0xff) as u8;
67         v[7] = ((u >> 8*7) & 0xff) as u8;
68         v
69 }