我一直在尝试绕过CRC32计算而没有太大的成功,我似乎得到的值与我应该得到的值不匹配.
我知道Python有能够生成这些校验和的库(即zlib和binascii)但我没有能够使用它们的奢侈,因为在micropython上不存在CRC功能.
到目前为止,我有以下代码:
import binascii
import zlib
from array import array
poly = 0xEDB88320
table = array('L')
for byte in range(256):
crc = 0
for bit in range(8):
if (byte ^ crc) & 1:
crc = (crc >> 1) ^ poly
else:
crc >>= 1
byte >>= 1
table.append(crc)
def crc32(string):
value = 0xffffffffL
for ch in string:
value = table[(ord(ch) ^ value) & 0x000000ffL] ^ (value >> 8)
return value
teststring = "test"
print "binascii calc: 0x%08x" % (binascii.crc32(teststring) …
Run Code Online (Sandbox Code Playgroud)