求高手解析一下一段C语言的校验和代码转成C#后的问题 10
c语言检验和计算方法:unsignedcharCheckSum(unsignedchar*uBuff,unsignedcharuBuffLen){unsignedchar...
c 语言检验和计算方法:
unsigned char CheckSum(unsigned char *uBuff, unsigned char uBuffLen)
{
unsigned char i,uSum=0;
for(i=0;i<uBuffLen;i++)
{
uSum = uSum + uBuff[i];
}
uSum = (~uSum) + 1;
return uSum;
}
C#写的代码:
public static byte CheckNum(byte[] memorySpage)
{
byte uSum = 0;
foreach (byte b in memorySpage)
{
uSum += b;
}
byte i = Convert.ToByte(1);
uSum = (byte)~uSum;
uSum += i;
return uSum;
}
其中c语言开发的用在下位机STM32上面,通过tcp连接上C#开发的上位机,从而在计算校验和的时候数据对不上,其中C语言的校验数据(十六进制):00 00 E3 00 60 19 D2 6D 1C E9 AA BB CC DD 01 51,共16个字节,其中前15个字节用来计算,得出第16个字节即51为校验和,而用C#写的代码计算,得到结果是81,因此求高手帮忙解决看一下本人写的C#的代码,该如何改进?万分感谢 展开
unsigned char CheckSum(unsigned char *uBuff, unsigned char uBuffLen)
{
unsigned char i,uSum=0;
for(i=0;i<uBuffLen;i++)
{
uSum = uSum + uBuff[i];
}
uSum = (~uSum) + 1;
return uSum;
}
C#写的代码:
public static byte CheckNum(byte[] memorySpage)
{
byte uSum = 0;
foreach (byte b in memorySpage)
{
uSum += b;
}
byte i = Convert.ToByte(1);
uSum = (byte)~uSum;
uSum += i;
return uSum;
}
其中c语言开发的用在下位机STM32上面,通过tcp连接上C#开发的上位机,从而在计算校验和的时候数据对不上,其中C语言的校验数据(十六进制):00 00 E3 00 60 19 D2 6D 1C E9 AA BB CC DD 01 51,共16个字节,其中前15个字节用来计算,得出第16个字节即51为校验和,而用C#写的代码计算,得到结果是81,因此求高手帮忙解决看一下本人写的C#的代码,该如何改进?万分感谢 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询