CRC计算器

CRC计算器本文记录了如何使用 Python3 制作一个基于 AUTOSAR 标准的 CRC 计算器

大家好,欢迎来到IT知识分享网。

Python3 个人记录

一、CRC计算器



一、CRC计算器

  工作需要制作一个CRC计算器,计算器内置固定算法规则(AUTOSAR),普通的CRC计算可能无法通过本计算器实现。

二、AUTOSAR标准

E2E Profile
(AUTOSAR 4.2.2)
CRC 多项式(除数) 初始值 异或值
E2E Profile 01 8-bit 0x1D 0x00 0xFF
E2E Profile 02 8-bit 0x2F 0xFF 0xFF
E2E Profile 04 32-bit 0xFF 0xFFFFFFFF 0xFFFFFFFF
E2E Profile 05 16-bit 0x1021 0xFFFF 0x0000
E2E Profile 06 16-bit 0x1021 0xFFFF 0x0000
E2E Profile G 8-bit 0x1D 0x00 0xFF

三、使用步骤

1.引入库

代码如下:

from tkinter import * from binascii import unhexlify from crcmod import mkCrcFun 

2.计算代码

  主要使用python的crcmod库,直接pip install crcmod即可。
  以Profile 01为例,下述代码主要是图形界面相关的交互,主要计算过程都在库中,感兴趣的可以自己查看库的代码

代码如下:

def Profile01(): dataID = input_DataID.get().replace(' ', '') data = input_Data.get(0.0,END).replace(' ', '') offset = int(input_DataIDPosition.get()) calc = ((data[:offset] + dataID + data[offset:]).replace('\n','')) crc8 = mkCrcFun(0x11D, rev=False, initCrc=int(input_InitValue.get(),16), xorOut=int(input_XoroutValue.get(),16)) crc_out = hex(crc8(unhexlify(calc))).upper() str_list = list(crc_out) if len(str_list) == 3: str_list.insert(2, '0') # 位数不足补0 crc_data = ''.join(str_list[2:]) output_result.delete(0.0,END) output_result.insert(END, crc_data) # 追加显示运算结果 

3.完整代码

代码如下:

from tkinter import * from binascii import unhexlify from crcmod import mkCrcFun def Profile01(): dataID = input_DataID.get().replace(' ', '') data = input_Data.get(0.0,END).replace(' ', '') offset = int(input_DataIDPosition.get()) calc = ((data[:offset] + dataID + data[offset:]).replace('\n','')) crc8 = mkCrcFun(0x11D, rev=False, initCrc=int(input_InitValue.get(),16), xorOut=int(input_XoroutValue.get(),16)) crc_out = hex(crc8(unhexlify(calc))).upper()

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130823.html

(0)
上一篇 2025-08-12 17:26
下一篇 2025-08-12 17:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信