CRC-Python-如何从字符串中计算JAMCRC十进制数

问题描述 投票:-1回答:1

我需要从Python 3中的字符串中计算出CRC-32 / JAMCRC十进制数。我该怎么做?例如,此网页执行此操作:https://www.crccalc.com/-对于“ hello-world”,它显示1311505828。我想拥有执行完全相同的计算的脚本。我已经尝试过使用zlib.crc32和binascii.crc32,但它们对于“ hello-world”的结果为2983461467。

python decimal crc crc32
1个回答
0
投票

要计算CRC-32 / JAMCRC,您只需执行标准CRC-32的按位非运算(在您的情况下,“ hello-world”的CRC-32为2983461467)。但是您不能简单地使用~运算符,因为它适用于带符号整数(请参阅this answer)。相反,您首先需要减去:

import zlib
x = b'hello-world'
crc32_jamcrc = int("0b"+"1"*32, 2)-zlib.crc32(x) # 1311505828
© www.soinside.com 2019 - 2024. All rights reserved.