我正在尝试使用Python计算/生成一些随机字符串的CRC32哈希值,但它们与我从在线来源生成的值不匹配。以下是我在我的电脑上所做的操作:
另一种方法,
上述结果相同表明我正确地调用了该函数。但是,如果我访问以下在线资源,
有人知道我需要做什么才能获得匹配的结果吗?
当我输入这个问题时,我想到我可能需要将我的Python结果转换为十六进制。
>>> import binascii
>>> binascii.crc32('hello-world')
-1311505829
另一种方法,
>>> import zlib
>>> zlib.crc32('hello-world')
-1311505829
上述结果相同表明我正确地调用了该函数。但是,如果我访问以下在线资源,
- http://www.lammertbies.nl/comm/info/crc-calculation.html
- http://crc32-checksum.waraxe.us/
- http://www.md5calc.com/ (从下拉菜单中选择CRC32B)
有人知道我需要做什么才能获得匹配的结果吗?
当我输入这个问题时,我想到我可能需要将我的Python结果转换为十六进制。
>>> hex(zlib.crc32('hello-world'))
'-0x4e2bfda5'
不幸的是,那也没有帮助。:(
%
的定义。在大多数编程语言中,它被定义为以下之一:x % y == x - floor(x / y) * y
(“与除数同号”,即 Python 所做的。因此,2**32
是正数),x % y == x - truncate(x / y) * y
(“与被除数同号”)或x % y == x - round_towards_zero(x / y)
(“正模”)。通常情况下,这与/
相同,但并非总是如此。要在其他语言中始终进行正整数除法,您可以像这样做:def positive_mod(a, b): return ((a % b) + b) % b
。请参见 https://en.wikipedia.org/wiki/Modulo_operation。 - Artyer