我想弄清楚如何检查校验和。我的消息如下所示:试图弄清楚如何检查校验和
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");
我不认为你的校验和算法是正确的。你确定你应该添加它们吗? – 2010-05-19 15:57:42
GetHashCode()http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx不行吗?校验和是你所说的,所以这个算法是正确的。如果传递的是同一组十六进制值,则可以判断其工作方式(以相同的顺序 - 如果字节无序,则不是同一个对象)。 – StingyJack 2010-05-19 15:58:51
单字节求和是0x1A,否定为0xE5。添加一个会产生0xE6,而不是0xF6。 – 2010-05-19 16:05:01