大家好,欢迎来到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