xref: /plan9-contrib/sys/src/libc/port/beget.c (revision b928b27a41e220ecec6259d0639b59761ac5616a)
1 #include <u.h>
2 #include <libc.h>
3 
4 u16int
be16get(uchar * t,uchar ** r)5 be16get(uchar *t,  uchar **r)
6 {
7 	if(r != nil)
8 		*r = t+2;
9 	return (u16int)t[0]<<8 | (u16int)t[1];
10 }
11 
12 u32int
be24get(uchar * t,uchar ** r)13 be24get(uchar *t,  uchar **r)
14 {
15 	if(r != nil)
16 		*r = t+3;
17 	return (u32int)t[1]<<16 | (u32int)t[2]<<8 | (u32int)t[3];
18 }
19 
20 u32int
be32get(uchar * t,uchar ** r)21 be32get(uchar *t,  uchar **r)
22 {
23 	if(r != nil)
24 		*r = t+4;
25 	return (u32int)t[0]<<24 | (u32int)t[1]<<16 | (u32int)t[2]<<8 | (u32int)t[3];
26 }
27 
28 u64int
be64get(uchar * t,uchar ** r)29 be64get(uchar *t,  uchar **r)
30 {
31 	if(r != nil)
32 		*r = t+8;
33 	return (u64int)t[0]<<56 | (u64int)t[1]<<48 | (u64int)t[2]<<40 | (u64int)t[3]<<32 |
34 		(u64int)t[4]<<24 | (u64int)t[5]<<16 | (u64int)t[6]<<8 | (u64int)t[7];
35 }
36 
37 uchar*
be16put(uchar * t,u16int r)38 be16put(uchar *t, u16int r)
39 {
40 	*t++ = r>>8;
41 	*t++ = r;
42 	return t;
43 }
44 
45 uchar*
be32put(uchar * t,u32int r)46 be32put(uchar *t, u32int r)
47 {
48 	*t++ = r>>24;
49 	*t++ = r>>16;
50 	*t++ = r>>8;
51 	*t++ = r;
52 	return t;
53 }
54 
55 uchar*
be24put(uchar * t,u32int r)56 be24put(uchar *t, u32int r)
57 {
58 	*t++ = r>>16;
59 	*t++ = r>>8;
60 	*t++ = r;
61 	return t;
62 }
63 
64 uchar*
be64put(uchar * t,u64int r)65 be64put(uchar *t, u64int r)
66 {
67 	*t++ = r>>56;
68 	*t++ = r>>48;
69 	*t++ = r>>40;
70 	*t++ = r>>32;
71 	*t++ = r>>24;
72 	*t++ = r>>16;
73 	*t++ = r>>8;
74 	*t++ = r;
75 	return t;
76 }
77 
78