我有一些技術檔案并嘗試在 python 中復制給定的 CRC 演算法。但是我沒有得到正確的結果。我如何調整我的演算法以匹配檔案?
這是檔案:

這是我的代碼:
data1 = b'\0x01\0x04\0x00\0x0b\0x00\0x01'
data2 = b'\0x01\0x03\0x00\0x65\0x00\0x01'
def crc16(data : bytearray):
length = len(data)
crc = 0xffff
for i in range(0, length):
crc ^= data[i]
for j in range(0,8):
if (crc & 0x01):
crc =(crc >> 1) ^ 0xa001
else:
crc = crc >> 1
return crc
print(crc16(data1).to_bytes(2, 'big'))
print(crc16(data2).to_bytes(2, 'big'))
以下是檔案的一些示例:

這是我的結果:
b'\xc9Y'
b'\xd4\xd1'
uj5u.com熱心網友回復:
你的輸入資料是錯誤的。第一個應該是b'\x01\x04\x00\x0b\x00\x01'例如。您撰寫的第一個字串有'\0'(一個空字符),然后是文字字符'x04',依此類推。您可以通過列印字串來檢查這一點。
更正此問題后,您的代碼似乎會給出正確的結果。
作為一個小提示,您的data引數型別資訊說它需要 abytearray但您實際上是在傳遞它bytes。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/419286.html
標籤:
