python|python小练习4 -- crcmod用于做modbus校验

import crcmod""" crcmod.predefined:使用预定义算法的CRC计算。这个模块提供函数工厂mkPredefinedCrcFun()和一个类,用于使用常见预定义CRC算法计算字节流的CRCs。除了这个CRC算法是由一个预定义名称指定,而不是各自的多项式,reflection和初始值以及最终的-XOR参数, 这个函数工厂和这个类非常类似于在crcmod中定义的那些。预定义的CRC算法: crcmod.predefined模块提供了以下预定义算法: PolynomialReversed?Init-value XOR-outCheck 0x18005True0xFFFF0x00000x4B37 mkPredefinedCrcFun() – CRC工厂函数 这个工厂函数提供了一个用于CRC计算的简单接口。 除了它通过名称而不是它的参数指定一种CRC算法,它类似于crcmod.mkCrcFun()crcmod.predefined.mkPredefinedCrcFun(crc_name) 函数工厂返回一个新函数,用于使用一种指定CRC算法计算CRCs。 参数: 1 crc_name (string) :要使用的预定义CRC算法名称 返回:CRC计算函数 返回类型:函数 返回的函数与由crcmod.mkCrcFun()返回的相同: 2 .crc_function(data[, crc=initCrc]) 参数: data (字节串):用于计算CRC的数据. crc:初始的crc值 返回:计算的CRC值返回类型:整数3、crcmod.predefined.mkCrcFun(crc_name) 这是对应crcmod.predefined.mkPredefinedCrcFun()的别名。 但使用from crcmod.predefined import *导入crcmod.predefined时,它没有被定义。Class PredefinedCrc: 这个类从crcmod.Crc类继承,并且对于初始化,它是相同的例外。 它通过名称而非它的参数指定一种CRC算法。1、class crcmod.predefined.PredefinedCrc(crc_name) 返回一个使用一种指定CRC算法计算CRCs的新Crc对象。 参数与用于工厂函数crcmod.predefined.mkPredefinedCrcFun()的那些参数相同。 参数: crc_name (string) – 要使用的预定义CRC算法的名称。T2、class crcmod.predefined.Crc(poly[, initCrc, rev, xorOut]) 这是一个用于crcmod.predefined.PredefinedCrc的别名。但,在使用以下格式from crcmod.predefined import *导入 crcmod.predefined时,它未被定义。 """

【python|python小练习4 -- crcmod用于做modbus校验】# 测试代码:
if __name__ == "__main__": # 测试modbus crc校验函数 modbus_crc = crcmod.predefined.mkPredefinedCrcFun("modbus") print(hex(modbus_crc(b'\x61\x62\x63\x64')))print("*" * 20) # 测试modbus crc校验类 modbus_crc_cl = crcmod.predefined.PredefinedCrc("modbus") modbus_crc_cl.update(b'\x61\x62\x63\x64') print(hex(modbus_crc_cl.crcValue))print("*" * 20)

python|python小练习4 -- crcmod用于做modbus校验
文章图片


    推荐阅读