98 } |
98 } |
99 |
99 |
100 return r; |
100 return r; |
101 } |
101 } |
102 |
102 |
103 template <class T> unsigned char CharByte (T a, unsigned int b) { |
|
104 if (b >= sizeof (T)) |
|
105 error ("CharByte: tried to get byte %u out of a %u-byte %s\n", |
|
106 b, sizeof (T), typeid(T).name()); |
|
107 |
|
108 unsigned long p1 = pow<unsigned long> (256, b); |
|
109 unsigned long p2 = pow<unsigned long> (256, b+1); |
|
110 unsigned long r = (a % p2) / p1; |
|
111 |
|
112 if (r > 256) |
|
113 error ("result %lu too big!", r); |
|
114 |
|
115 unsigned char ur = static_cast<unsigned char> (r); |
|
116 return ur; |
|
117 } |
|
118 |
|
119 #endif // __COMMON_H__ |
103 #endif // __COMMON_H__ |