/[debburn]/cdrkit/trunk/genisoimage/endian.c
ViewVC logotype

Contents of /cdrkit/trunk/genisoimage/endian.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 38 - (hide annotations) (download)
Wed Aug 23 12:34:49 2006 UTC (6 years, 9 months ago) by blade
Original Path: nonameyet/trunk/mkisofs/endian.c
File MIME type: text/plain
File size: 4711 byte(s)
Added 31, 33
1 blade 38 #include <mconfig.h>
2     #include "endian.h"
3    
4     /* Write a 64-bit quantity out into memory in BIG ENDIAN order */
5     void write_be64(in, out)
6     unsigned long long in;
7     unsigned char *out;
8     {
9     out[0] = (in >> 56) & 0xFF;
10     out[1] = (in >> 48) & 0xFF;
11     out[2] = (in >> 40) & 0xFF;
12     out[3] = (in >> 32) & 0xFF;
13     out[4] = (in >> 24) & 0xFF;
14     out[5] = (in >> 16) & 0xFF;
15     out[6] = (in >> 8) & 0xFF;
16     out[7] = in & 0xFF;
17     }
18    
19     /* Read in a 64-bit BIG ENDIAN quantity */
20     unsigned long long read_be64(in)
21     unsigned char *in;
22     {
23     unsigned long long result = 0;
24    
25     result |= (unsigned long long)in[0] << 56;
26     result |= (unsigned long long)in[1] << 48;
27     result |= (unsigned long long)in[2] << 40;
28     result |= (unsigned long long)in[3] << 32;
29     result |= (unsigned long long)in[4] << 24;
30     result |= (unsigned long long)in[5] << 16;
31     result |= (unsigned long long)in[6] << 8;
32     result |= (unsigned long long)in[7];
33    
34     return result;
35     }
36    
37     /* Write a 64-bit quantity out into memory in LITTLE ENDIAN order */
38     void write_le64(in, out)
39     unsigned long long in;
40     unsigned char *out;
41     {
42     out[0] = in & 0xFF;
43     out[1] = (in >> 8) & 0xFF;
44     out[2] = (in >> 16) & 0xFF;
45     out[3] = (in >> 24) & 0xFF;
46     out[4] = (in >> 32) & 0xFF;
47     out[5] = (in >> 40) & 0xFF;
48     out[6] = (in >> 48) & 0xFF;
49     out[7] = (in >> 56) & 0xFF;
50     }
51    
52     /* Read in a 64-bit LITTLE ENDIAN quantity */
53     unsigned long long read_le64(in)
54     unsigned char *in;
55     {
56     unsigned long long result = 0;
57    
58     result |= (unsigned long long)in[0];
59     result |= (unsigned long long)in[1] << 8;
60     result |= (unsigned long long)in[2] << 16;
61     result |= (unsigned long long)in[3] << 24;
62     result |= (unsigned long long)in[4] << 32;
63     result |= (unsigned long long)in[5] << 40;
64     result |= (unsigned long long)in[6] << 48;
65     result |= (unsigned long long)in[7] << 56;
66    
67     return result;
68     }
69    
70     /* Write a 48-bit quantity out into memory in LITTLE ENDIAN order */
71     void write_le48(in, out)
72     unsigned long long in;
73     unsigned char *out;
74     {
75     out[0] = in & 0xFF;
76     out[1] = (in >> 8) & 0xFF;
77     out[2] = (in >> 16) & 0xFF;
78     out[3] = (in >> 24) & 0xFF;
79     out[4] = (in >> 32) & 0xFF;
80     out[5] = (in >> 40) & 0xFF;
81     }
82    
83     /* Read in a 48-bit LITTLE ENDIAN quantity */
84     unsigned long long read_le48(in)
85     unsigned char *in;
86     {
87     unsigned long long result = 0;
88    
89     result |= (unsigned long long)in[0];
90     result |= (unsigned long long)in[1] << 8;
91     result |= (unsigned long long)in[2] << 16;
92     result |= (unsigned long long)in[3] << 24;
93     result |= (unsigned long long)in[4] << 32;
94     result |= (unsigned long long)in[5] << 40;
95    
96     return result;
97     }
98    
99     /* Write a 32-bit quantity out into memory in BIG ENDIAN order */
100     void write_be32(in, out)
101     unsigned long in;
102     unsigned char *out;
103     {
104     out[0] = (in >> 24) & 0xFF;
105     out[1] = (in >> 16) & 0xFF;
106     out[2] = (in >> 8) & 0xFF;
107     out[3] = in & 0xFF;
108     }
109    
110     /* Read in a 32-bit BIG ENDIAN quantity */
111     unsigned long read_be32(in)
112     unsigned char *in;
113     {
114     unsigned long result = 0;
115    
116     result |= (unsigned long)in[0] << 24;
117     result |= (unsigned long)in[1] << 16;
118     result |= (unsigned long)in[2] << 8;
119     result |= (unsigned long)in[3];
120    
121     return result;
122     }
123    
124     /* Write a 32-bit quantity out into memory in LITTLE ENDIAN order */
125     void write_le32(in, out)
126     unsigned long in;
127     unsigned char *out;
128     {
129     out[0] = in & 0xFF;
130     out[1] = (in >> 8) & 0xFF;
131     out[2] = (in >> 16) & 0xFF;
132     out[3] = (in >> 24) & 0xFF;
133     }
134    
135     /* Read in a 32-bit LITTLE ENDIAN quantity */
136     unsigned long read_le32(in)
137     unsigned char *in;
138     {
139     unsigned long result = 0;
140    
141     result |= (unsigned long)in[0];
142     result |= (unsigned long)in[1] << 8;
143     result |= (unsigned long)in[2] << 16;
144     result |= (unsigned long)in[3] << 24;
145    
146     return result;
147     }
148    
149     /* Write a 16-bit quantity out into memory in BIG ENDIAN order */
150     void write_be16(in, out)
151     unsigned short in;
152     unsigned char *out;
153     {
154     out[0] = (in >> 8) & 0xFF;
155     out[1] = in & 0xFF;
156     }
157    
158     /* Read in a 16-bit BIG ENDIAN quantity */
159     unsigned short read_be16(in)
160     unsigned char *in;
161     {
162     unsigned short result = 0;
163    
164     result |= (unsigned short)in[0] << 8;
165     result |= (unsigned short)in[1];
166     return result;
167     }
168    
169     /* Write a 16-bit quantity out into memory in LITTLE ENDIAN order */
170     void write_le16(in, out)
171     unsigned short in;
172     unsigned char *out;
173     {
174     out[0] = in & 0xFF;
175     out[1] = in & 0xFF >> 8;
176     }
177    
178     /* Read in a 16-bit LITTLE ENDIAN quantity */
179     unsigned short read_le16(in)
180     unsigned char *in;
181     {
182     unsigned short result = 0;
183    
184     result |= (unsigned short)in[0];
185     result |= (unsigned short)in[1] << 8;
186     return result;
187     }
188    

  ViewVC Help
Powered by ViewVC 1.1.5