1 #include <u.h>
2 #include <libc.h>
3
4 u16int
le16get(uchar * t,uchar ** r)5 le16get(uchar *t, uchar **r)
6 {
7 if(r != nil)
8 *r = t+2;
9 return (u16int)t[0] | (u16int)t[1]<<8;
10 }
11
12 u32int
le24get(uchar * t,uchar ** r)13 le24get(uchar *t, uchar **r)
14 {
15 if(r != nil)
16 *r = t+3;
17 return (u32int)t[0] | (u32int)t[1]<<8 | (u32int)t[2]<<16;
18 }
19
20 u32int
le32get(uchar * t,uchar ** r)21 le32get(uchar *t, uchar **r)
22 {
23 if(r != nil)
24 *r = t+4;
25 return (u32int)t[0] | (u32int)t[1]<<8 | (u32int)t[2]<<16 | (u32int)t[3]<<24;
26 }
27
28 u64int
le64get(uchar * t,uchar ** r)29 le64get(uchar *t, uchar **r)
30 {
31 if(r != nil)
32 *r = t+8;
33 return (u64int)t[0] | (u64int)t[1]<<8 | (u64int)t[2]<<16 | (u64int)t[3]<<24 |
34 (u64int)t[4]<<32 | (u64int)t[5]<<40 | (u64int)t[6]<<48 | (u64int)t[7]<<56;
35 }
36
37 uchar*
le16put(uchar * t,u16int r)38 le16put(uchar *t, u16int r)
39 {
40 *t++ = r;
41 *t++ = r>>8;
42 return t;
43 }
44
45 uchar*
le24put(uchar * t,u32int r)46 le24put(uchar *t, u32int r)
47 {
48 *t++ = r;
49 *t++ = r>>8;
50 *t++ = r>>16;
51 return t;
52 }
53
54 uchar*
le32put(uchar * t,u32int r)55 le32put(uchar *t, u32int r)
56 {
57 *t++ = r;
58 *t++ = r>>8;
59 *t++ = r>>16;
60 *t++ = r>>24;
61 return t;
62 }
63
64 uchar*
le64put(uchar * t,u64int r)65 le64put(uchar *t, u64int r)
66 {
67 *t++ = r;
68 *t++ = r>>8;
69 *t++ = r>>16;
70 *t++ = r>>24;
71 *t++ = r>>32;
72 *t++ = r>>40;
73 *t++ = r>>48;
74 *t++ = r>>56;
75 return t;
76 }
77