簡體   English   中英

計算CRC

[英]Calculating a CRC

我需要能夠計算CRC才能與機器通信。 我對CRC的計算還很陌生,所以很抱歉如果這個確切的問題已經回答了,因為我不確定我在尋找什么。 無論如何,我需要在Python中計算CCIT 16位CRC。 我的消息是一個二進制流,看起來像:

b'G18M1314D4417,2511165'

該消息還以STX開頭,以ETX字符結尾。 我嘗試使用 Python模塊:

import crc16
print(crc16.crc16xmodem(b'G18M1314D4417,2511165'))

哪個返回:

61154

當正確的CRC是:

A855

我想念什么?

編輯:我正在使用Python 3.3。 我從機器發送的消息中得到了“正確的” CRC。 我不確定是否應該包括STX / ETX字符,因為我以前從未使用過CRC。

我相信您的計算機正在使用名為CRC-16 / MCRF4XX的參數化CRC算法。

您可以使用可以與pip一起安裝的crcmod模塊。 可以使用預定義算法crc-16-mcrf4xx計算CRC。 CRC計算中應包括STX和ETX。

import crcmod
import crcmod.predfined

STX = b'\x02'
ETX = b'\x03'
data = b'G18M1314D4417,2511165'
message = STX + data + ETX

crc16 = crcmod.predefined.Crc('crc-16-mcrf4xx')
crc16.update(message)
crc = crc16.hexdigest()

>>> crc
'A855'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM