Python:
Python代码就是简单!调库就完事了
from zlib import crc32
import os
import sys
def crc32Calculate(filename):
with open(filename, 'rb') as FilePtr:
result = zlib.crc32(FilePtr.read())
result = result & 0xffffffff
return result
if __name__ == '__main__':
CrcCalculateResult = hex(crc32Calculate('xxx.bin'))
print('CRC32 Calculated = ', CrcCalculateResult, '\r\n')
C++:
明显比Python复杂,注意有两种方式:
- 整个数组一起计算
- 数组分段进行计算
两种方式的核心区别在于是否在意内存的空间。若在意,如OTA过程中读取数据不可能一次性把Flash里的数据读出来,则分段进行计算;否则一起计算也可以。
Tips:
- 整个数组一起计算,则可在函数crc32Calculate()内与0xFFFFFFFFUL进行异或;
- 数组分段计算,每次计算的输出作为下次计算的输入,且必须在计算完最后一段后,再与0xFFFFFFFFUL进行异或。