[英]Sum from an Array of Hex values to compute Checksum not working
我有一個包含以下十六進制值的數組:
A8, 00, 00, 11, 01, 44, 33, 28, 0C, 15, 2B, 00, 28, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, FF, 00, 00, 00, FE, FF, 80, 7F, 00, 00, 0C, 00, 03, 35, 00, 00, 00
我需要從他們那里計算一個校驗和,我知道結果是 C5 。
我得到了以下信息,但我認為它們是模糊的,因為它們含糊不清:
校驗和是通過對值求和得出的,結果也是“使用最右邊的十六進制字節”
相加的所有數據的最低有效字節
添加數據 8 位寬
如果您更喜歡此為十進制:
168, 0, 0, 17, 1, 68, 51, 40, 12, 21, 43, 0, 40, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 1 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 1 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 1 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 12, 0, 3, 53, 0, 0, 0
十進制checksum is 197
任何幫助,將不勝感激。
編輯:
在回答RJM的問題時,我基本上嘗試遍歷值並合計 LSB 和 MSB。 如下:
int LSB = 0;
int MSB = 0;
foreach (Byte value in byteArray) {
LSB += (value & 1);
MSB += (value >> 7);
}
//Expected Checksum is 197
//LSB == 52
//MSB == 60
值得慶幸的是,向我提供了更多信息,我可以發布解決方案。
int chk = 0;
foreach (Byte value in byteArray) {
chk += value;
}
chk = (chk & 255);
所以,基本上我需要對所有字節求和,然后使用結果的 LSB。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.