Issue 1678102: zlib.crc32() not cross-platform (original) (raw)
Issue1678102
Created on 2007-03-10 23:07 by bencollver, last changed 2022-04-11 14:56 by admin. This issue is now closed.
Messages (3) | ||
---|---|---|
msg31476 - (view) | Author: Ben Collver (bencollver) | Date: 2007-03-10 23:07 |
The zlib.crc32() function sometimes produces different results for the same input on big and little-endian processors. Same for zlib.adler32(). sparc64: >>> import zlib >>> print zlib.adler32("--------------------------------------------------", 1) > 3763407051 >>> print zlib.crc32("--------------------------------------------------", 1) 3044228349 i386: >>> import zlib >>> print zlib.adler32("--------------------------------------------------", 1) > -531560245 >>> print zlib.crc32("--------------------------------------------------", 1) -1250738947 | ||
msg31477 - (view) | Author: Ben Collver (bencollver) | Date: 2007-03-10 23:13 |
The extra > characters before the first results come from me pasting the results to my irc client, then copying from there and pasting here. Sorry for any confusion. | ||
msg31478 - (view) | Author: Gabriel Genellina (ggenellina) | Date: 2007-03-13 22:52 |
py> -531560245 & 0xffffffff 3763407051L It's the same number (actually, the same bit pattern). The i386 version is signed, the other unsigned. The i386 platform uses a 32 bit "int"; the sparc64 uses 64 bits (I presume). 3763407051 doesnt fit in 31bits, so it's seen as a negative number. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:56:23 | admin | set | github: 44695 |
2007-03-10 23:07:43 | bencollver | create |