int bigEndian; /* Make sure that we've got the endianness set right. If the machine is big-endian (up to 64 bits) the following value will be signed, otherwise it will be unsigned. We can't easily test for things like middle-endianness without knowing the size of the data types, but then again it's unlikely we're being run on a PDP-11 */ bigEndian = ( *( long * ) "/x80/x00/x00/x00/x00/x00/x00/x00" < 0 );