[Guido] > Modified Files: > test_zlib.py > Log Message: > Portable way of producing unsigned 32-bit hex output to print the > CRCs. > > > Index: test_zlib.py > =================================================================== > RCS file: /cvsroot/python/python/dist/src/Lib/test/test_zlib.py,v > retrieving revision 1.18 > retrieving revision 1.19 > diff -C2 -d -r1.18 -r1.19 > *** test_zlib.py 23 Jul 2002 19:04:09 -0000 1.18 > --- test_zlib.py 12 Aug 2002 15:26:05 -0000 1.19 > *************** > *** 13,18 **** > > # test the checksums (hex so the test doesn't break on 64-bit machines) > ! print hex(zlib.crc32('penguin')), hex(zlib.crc32('penguin', 1)) > ! print hex(zlib.adler32('penguin')), hex(zlib.adler32('penguin', 1)) > > # make sure we generate some expected errors > --- 13,20 ---- > > # test the checksums (hex so the test doesn't break on 64-bit machines) > ! def fix(x): > ! return "0x%x" % (x & 0xffffffffL) > ! print fix(zlib.crc32('penguin')), fix(zlib.crc32('penguin', 1)) > ! print fix(zlib.adler32('penguin')), fix(zlib.adler32('penguin', 1)) > > # make sure we generate some expected errors This raises a question: what should crc32 and adler32 return? They return 32-bit values, and that's part of external definitions so we can't change that, but how we *view* "the sign bit" is up to us. binascii.crc32() always-- even on 64-bit boxes --returns a value in range(-2**31, 2**31). I know that because I forced it to not long ago. I don't know what the other guys return (zlib.crc32(), zlib.adler32(), ...?). It would sure be nice if they returned values in range(0, 2**32) instead. A difficulty with changing this stuff is that checksums seem frequently to be read and written via the struct module, with format code "l", and e.g. >>> struct.pack("!l", 1L << 31) Traceback (most recent call last): File "<stdin>", line 1, in ? OverflowError: long int too large to convert to int >>>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4