python2 :
>>> import zlib
>>> print zlib.crc32("a") & 0xffffffff
3904355907
>>> print zlib.crc32("a")
-390611389
因为python2中,crc32的返回值是 [-2^31, 2^31-1] ,所以在python2中需要 & 0xffffffff
python3:
>>> import zlib
>>> print("a".encode('utf8'))
b'a'
>>> print(zlib.crc32("a".encode('utf8')))
3904355907
python3记得crc32需要传入的是“a bytes-like object”,所以需要对字符串进行encode。
网友评论