16,748
社区成员
相同字符串 c# 和delphi算出的checksum结果不一样 c#=4727 delphi=4599 各位大神帮忙分析一下
c#代码:
String temp = "W1N 030000023137 S 1 2 361 371";
Int32 sum = (Int32)0x03;// 表示ETX
for (int i = 0; i < temp.Length; i++)
{
Int32 j = (Int32)temp[i];
sum += (Int32)temp[i];
Console.WriteLine(j.ToString("X"));
}
//4727
String w_str = String.Format("{0:X4}", sum & 0xffff);
Console.WriteLine("校验码:{0}", w_str);
//校验码 1277
//Console.Write("Press any key to continue . . . ");
delphi 2007
vStr:='W1N 030000023137 S 1 2 361 371';
vLen:=Length(vStr);
sum:=0;
sum:=ord(chr(3));
for I := 0 to vLen do //1
begin
vtmpsingle:=vStr[i];
vK:=Ord(vtmpsingle);
sum:=sum+vK;
end;
//4599
//'11F7'
vtmp:=InttoHex(sum,4);
c#和delphi数据类型不致