试图弄清楚如何检查校验和

时间:2010-05-19 15:54:46

标签: c# binary bit-manipulation hex checksum

我正在试图弄清楚如何检查校验和。我的消息如下:

38 0A 01 12 78 96 FE 00 F0 FB D0 FE F6

F6是校验和。我将前面的12组转换为二进制,然后将它们一起添加。然后尝试按位操作以应用2s补码。我得到的值为-1562,但我无法将其转换回十六进制以检查值是否正确。有人能指出我正确的方向吗?

我的代码:

string[] hexValue = {"38", "0A", "01", "12", "78", "96", "FE", "00", "F0", "FB", "D0", "FE"};
int totalValue = 0;
foreach(string item in hexValue)
{
    totalValue += Int32.Parse(item, NumberStyles.HexNumber);
}

int bAfter2sC = ~totalValue + 1;
Console.Write("answer :" + bAfter2sC + "\n");

2 个答案:

答案 0 :(得分:2)

使用ToStringbAfter2sC.ToString("X8")

可以转换为十六进制

答案 1 :(得分:1)

我不确定你使用的是什么算法(-1562需要3个字节,而不是2个字节),但如何使用标准校验位算法,如mod 11,也称为ISDN 10,如文档here :“通过将所有产品加在一起然后除以11,可以非常简单地验证它。”