2012-09-06 122 views
1

我有格式協議校驗

\003LLCCDDDD..DDXX 
  • LL的ONR協議:總數據包長度不包括關注字節。
  • CC:命令代碼。
  • DD:數據字節(HEX ASCII)。
  • XX:LLCCDDDD..DD的校驗和(它不包括注意字節和校驗和本身)。校驗和是命令包中ASCII字符的簡單8位總和。

這裏有一個例子:

Command: 「\0030611C8」 (Length=6, command=0x11, checksum=0xC8) 

我只是想知道如何檢驗出來是0xC8 日Thnx :)

+0

什麼協議? – 2012-09-06 05:05:17

+0

協議發送和接收來自某些設備的命令 –

+0

您的情況下的數據字節值是什麼。現在長度不是0x06。 – wbao

回答

5

隨着你的協議狀態的描述,校驗和是不是關注字節或校驗和的字節總和。你總共有7字節的傳輸:

'\003', '0', '6', '1', '1', 'C', '8' 

其中,我\003是關注字節,所以它不包含在校驗和。同樣,最後兩個字符的校驗和是,並不包括在內。這就爲你的例子只是4個字符:

'0', '6', '1', '1' 

從這些字符到其十六進制表示翻譯(檢查的ASCII table),以使它們更容易添加給出了這些結果:

0x30, 0x36, 0x31, 0x31 

然後添加那些值一起並得到:

0xC8 

這是您正在尋找的答案!

+0

請你詳細說明一下嗎? –

+0

@詹姆斯,你是什麼意思,詳細闡述更多?你有什麼問題? –

+0

我的意思是'0'如何轉換爲0x30? –

1

這是我的猜想:

你校驗目標代碼是0611

讓我們做到這一點:

ASCII(0)= 48,ASCII(6)= 54,ASCII(1) = 49;

得到4個ASCII碼的總和是200 = 0xC8