- int a, len;
- union { int i; unsigned char c[sizeof(int)]; } tmp;
-
- tmp.i = htonl(val); /* ensure that that we're big-endian */
- for (a = 0; a < (int) sizeof(int) - 1; a++) /* skip superfluous octets */
- if (!((tmp.c[a] == 0 && !(tmp.c[a+1] & 0X80)) ||
- (tmp.c[a] == 0XFF && (tmp.c[a+1] & 0X80))))
+ unsigned long long uval = val;
+ unsigned char tmp[sizeof(uval)];
+ int len;
+ size_t i;
+ for (i = sizeof(uval); i > 0; )
+ {
+ tmp[--i] = uval;
+ uval >>= 8;
+ }
+ for (i = 0; i < sizeof(uval)-1; i++)
+ if (!((tmp[i] == 0 && !(tmp[i+1] & 0x80))
+ ||
+ (tmp[i] == 0xFF && (tmp[i+1] & 0x80))))