首页 新闻 赞助 找找看

求高手解析一下一段C语言的校验和代码转成C#后的问题

0
悬赏园豆:200 [已解决问题] 解决于 2017-06-21 18:18

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#的代码,该如何改进?万分感谢

童俊江的主页 童俊江 | 初学一级 | 园豆:8
提问于:2017-03-01 09:55
< >
分享
最佳答案
1

并没有问题,十六进制的 0x51就是十进制的81。 C# 代码的变量名 i 改改就没有什么问题了。

收获园豆:200
lintaoqm | 菜鸟二级 |园豆:402 | 2017-03-01 16:51
其他回答(2)
0

0x51=81,没问题。

Hoze | 园豆:196 (初学一级) | 2017-03-02 10:50
0

NO PROBLEM

CaiYongji | 园豆:1267 (小虾三级) | 2017-03-05 19:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册