iT邦幫忙

0

Checksum Algorithm (核對和演算法)

這裡只列出Checksum其中一種Sum Zero,我公司有使用到的方法。
還在學習中,如有錯誤,還請不吝嗇提出,確認後將盡快更正。

產生Checksum

Checksum 的產生機制很簡單,將資料分成 K 小塊之後,將每塊的所有值全部相加之後得到一個數字,再取其「二補數」,就可以得到 Checksum。

檢查Checksum

Checksum 的檢查機制則是將所有收到的 K 個小塊中所有值相加再加上 Checksum 後,再取其「二補數」,若結果為 0 則表示正確,不為 0 則表示傳輸中有發生錯誤。

產生Checksum - 範例

https://ithelp.ithome.com.tw/upload/images/20200805/20124031HyKIwjliCI.png
有一組16進位制數值資料: 0x6A00C8

Byte check 組成元素
0x6A 0x6A = 0x00 + 0x6A
0x00 0x6A = 0x6A + 0x00
0xC8 0x32 = 0x6A + 0xC8
checkSum = 0xCE // 0x32在8進位制下的二補數

解釋

  • 0x6A + 0xC8應該會得到 0x132,但是data typechar,限制在1 byte之下,只會保留0x32的數值

fx-991ES輔助計算二補數

如果有fx-991ES工程計算機

  1. (ON)開機後,按下(MODE),再按下數字(4),切換模式到(BASE-N)
  2. 按下(X^■)鍵(上方帶有綠色HEX),切換到16進位制模式
  3. 按下(SHIFT),再按下數字(3)[BASE],再按下數字(6),呼叫Neg
  4. 按下數字(3)、數字(2),畫面應該會顯示Neg(32
  5. 按下(=),開始計算
  6. 結果會顯示FFFFFFCE
  • 8進位制下,只會保留最右邊的2位數,也就是CE

參考資料

  1. 核對和 - 維基百科,自由的百科全書
  2. 二補數 - 維基百科,自由的百科全書
  3. [筆記] 網路通訊原理:CRC 與 Checksum | iLog
  4. 42. 使用checksum檢查機制,判斷接收的資料為正確,則checksum與..-阿摩線上測驗
  5. Online CRC-8 CRC-16 CRC-32 Calculator
  6. fx-991ES 工程計算機 官方說明書

尚未有邦友留言

立即登入留言