這裡只列出Checksum其中一種Sum Zero
,我公司有使用到的方法。
還在學習中,如有錯誤,還請不吝嗇提出,確認後將盡快更正。
Checksum 的產生機制很簡單,將資料分成 K 小塊之後,將每塊的所有值全部相加之後得到一個數字,再取其「二補數」,就可以得到 Checksum。
Checksum 的檢查機制則是將所有收到的 K 個小塊中所有值相加再加上 Checksum 後,再取其「二補數」,若結果為 0 則表示正確,不為 0 則表示傳輸中有發生錯誤。
有一組16進位制數值資料: 0x6A00C8
Byte | check | 組成元素 |
---|---|---|
0x6A | 0x6A | = 0x00 + 0x6A |
0x00 | 0x6A | = 0x6A + 0x00 |
0xC8 | 0x32 | = 0x6A + 0xC8 |
checkSum = 0xCE // 0x32在8進位制下的二補數
0x6A + 0xC8
應該會得到 0x132
,但是data type
為char
,限制在1 byte
之下,只會保留0x32
的數值如果有fx-991ES工程計算機
Neg
Neg(32
FFFFFFCE
CE
參考資料