* On 20 Jan 2015, Ben Boeckel wrote:
> > - unsigned char digest[16];
> > + union {
> > + unsigned char charval[16];
> > + unsigned int intval;
> > + } digest;
>
> How does this work with big endian versus little endian?
BE and LE may pack structs differently, but I believe members of a
union should have the same alignment even if of differing size. This
should be safe for byte transposition between a char[] and an int. (You
can't port the cache file across endianness, but that's true for other
reasons.)
This will cause a different end of the char[] to transpose into the int
on BE vs LE systems, but that's OK within the same CPU so long as the
hash algorithm is fairly well distributed across the 16 bytes.
--
David Champion • [email protected]