我正在试图弄清楚如何检查校验和。我的消息如下:
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");
答案 0 :(得分:2)
使用ToString
:bAfter2sC.ToString("X8")
答案 1 :(得分:1)
我不确定你使用的是什么算法(-1562需要3个字节,而不是2个字节),但如何使用标准校验位算法,如mod 11,也称为ISDN 10,如文档here :“通过将所有产品加在一起然后除以11,可以非常简单地验证它。”