2011-09-01 484 views
1

我不理解這個結果如何可以爲零。這給我看了一個例子來驗證消息的校驗和。校驗和的十六進制計算

ED(12+01+ED=0) 

這個結果如何爲零? 「

」1201是消息「ED是校驗和,我的問題更多,我怎樣才能確定校驗和?

謝謝你的幫助。

最好的問候, FR

回答

7

這個結果怎麼會是零?

校驗和大概是由一個字節表示。

一個字節可以存儲256個不同的值,所以計算可能完成模塊256

由於0×12 0×01 + + 0xED = 256,則結果變爲0

我怎樣才能確定校驗和?

校驗和是所述特定字節值B,使消息+ B = 0(模256)中的字節的總和。

所以,@LanceH在註釋中說,要弄清楚校驗B,你...

  1. 加起來字節的值在消息中(說這加起來M
  2. compute M' = M % 256
  3. 現在,校驗和B計算爲256 - M'
+1

要詳細說明一下。將消息的字節相加。以256爲模的總和。從256減去這個數字,這是你的校驗和。 – LanceH

1

我不知道你的校驗和細節,但在基16算術(在基地10):

base-16  base-10 
----------------------- 
    12   18 
    01    1 
+ ED   237 
------------------------ 
    100   256 

如果你的校驗和是模256(16^2),你只保留最後2個基數的16位數,所以你有00

0

很明顯,當你加起來12 + 01 + ED時,結果溢出1個字節,實際上它是十六進制數字100.所以,如果你只取最後一個字節0x0100。你得到0.