我想發送數據到TCP 105電路。如何解決CRC(循環冗餘校驗)計算?
以下十六進制命令行發送數據123:
7F30001103 313233 45D4
這裏,313233是123十六進制表示和45D4是CRC值。
我在計算CRC後得到這個45D4的問題。在網上搜索了很長時間之後,我得到了不同標準中的其他CRC值。但是這些CRC值不被我的LED顯示電路所接受。
請幫我瞭解如何從7F30001103313233獲得45D4。
在此先感謝。
我想發送數據到TCP 105電路。如何解決CRC(循環冗餘校驗)計算?
以下十六進制命令行發送數據123:
7F30001103 313233 45D4
這裏,313233是123十六進制表示和45D4是CRC值。
我在計算CRC後得到這個45D4的問題。在網上搜索了很長時間之後,我得到了不同標準中的其他CRC值。但是這些CRC值不被我的LED顯示電路所接受。
請幫我瞭解如何從7F30001103313233獲得45D4。
在此先感謝。
該命令匹配稱爲CRC-16/CMS的算法。
$ reveng -w 16 -s 7f30001103313233d445
width=16 poly=0x8005 init=0xffff refin=false refout=false xorout=0x0000 ch
eck=0xaee7 name="CRC-16/CMS"
這是可能正確的算法,因爲你只給一個碼字(因爲我假設CRC已經字節交換。)
要生成的代碼計算這個CRC,例如參見Mark Adler的crcany工具。
感謝這麼好的回覆Regregex。我希望這會起作用,我會嘗試。 –
我用8字節的方法得到'0x9A8F'。你應該計算8字節的CRC還是隻有一個subsdet?即使使用相同的算法,CRC依賴於您正在使用的多項式。 CRC逆轉,這是一個棘手的! –
我已經用0x9A8F測試過,但沒有成功。可能是它的CRC-16。 CRC逆轉將是D445而不是45D4。 –