C#怎么取得16进制数的高8位和低8位

来源:百度知道 编辑:UC知道 时间:2024/06/15 11:42:31
现在很多需要实时计算校验位,例如发送字符串前几位为
string InputString="04 D0 04 00",需要计算两个校验位补充到后面,先计算前面04,D0,04,00表示的16进制数之和得到D8。
第一个校验位为(0-D8)的高八位用16进制表示,手工计算得到FF。
第二个校验位为(0-D8)的低八位用16进制表示,手工计算得到28。

如果用程序来计算的话,那C#该怎么写?谢谢!
谁的程序写的好,补充分数。
搞定,原来C#也有移位的运算啊。
string[] Result = InputString.Split(' ');
int CheckSum = 0;
for (int i = 0; i < Result.Length; i++)
{
CheckSum += int.Parse(Result[i], System.Globalization.NumberStyles.HexNumber);
}
string ACK= (((0 - CheckSum) >> 8) & 0xFF).ToString("X") + " " + ((0 - CheckSum)&0xFF).ToString("X");

其他语言的计算方式如下:
Checksum = 0;
for (i = 0; i < Buffer[ 0 ]; i++)
Checksum += Buffer[i];

Buffer[i++] = (unsigned char)(((-Checksum) >> 8) & 0xFF); //0-checksum 高8位
Buffer[i++] = (unsigned char)((-Checksum) & 0xF

我也是刚学,抛砖引玉吧;
我的思路是这样的,把整个字符串按下标位置分段累加。得到整型。然后在转成16进制。弄2个FOR循环。

就是不知道您这个效验位是如何计算的。。