这个计算校验和怎么算谢谢
说明如下The checksum byte is calculated according to the following procedure:
sum=0;
for each of the characters do
sum=sum+character assii code
sum=(sum SHL 1)+(sum SHR 7)
(SHL= shift left,SHR=shift right)
/////////////////
eg:
Byte no. character(s)(decimal notation)
1 2
2 32
3 49
4 46
5 32
6 196(= checksum of byte 1 to byte 5)
请问这196 是怎么算出来的 谢谢 --------------------编程问答-------------------- 没看明白,帮顶 --------------------编程问答-------------------- 谢谢LS帮顶
(SHL= shift left,SHR=shift right) 是什么意思 看不懂 --------------------编程问答-------------------- (SHL= shift left:最左边
SHR=shift right: 最右边
--------------------编程问答-------------------- shl <<
shr >> --------------------编程问答-------------------- 什么产品?没有gride吗?没有实例吗? --------------------编程问答--------------------
sum=(sum SHL 1)+(sum SHR 7)
是不是就是 这样
SUM=(SUM<<1)+(SUM>>7)
还有字符32 的ASCII 是多少啊 也是32 吗??? 还是 63+62???? --------------------编程问答-------------------- 自己顶一下 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 5个字节,每个字节加后,SUM左移1位,然后右移7位。不过我的结果是192。
以下代码供参考:
var
sum: BYTE;
begin
sum:=0;
sum := sum + 2;
sum := (sum shl 1) +(sum SHR 7);
sum := sum + 32;
sum := (sum shl 1) +(sum SHR 7);
sum := sum + 49;
sum := (sum shl 1) +(sum SHR 7);
sum := sum + 46;
sum := (sum shl 1) +(sum SHR 7);
sum := sum + 32;
sum := (sum shl 1) +(sum SHR 7);
showmessage(IntToStr(sum));
end;
--------------------编程问答--------------------
ASCII编码就是使用1个字节,0~255(10进制),或者X00~XFF(16进制);协议说得很明确的。 --------------------编程问答-------------------- “character(s)(decimal notation) ”
的意思是:ASCII码字符(10进制表示)
32(10进制)=20(160进制)=空格(字符)
--------------------编程问答-------------------- 顶顶!
补充:.NET技术 , C#