通讯中的校验和的检测,方法要求是:
校验和(8Byte)
16进制字符(0-F)表示的32位整数(8B)。
校验和的算法如下:
对“消息头+会话头+事务头+操作信息”按32位异或,对异或结果取反后的值为校验和。
1。有谁能告诉我有关dephi中对16进制的运算
2。取反运算如何实现
3。字符可以参加运算?
校验和(8Byte)
16进制字符(0-F)表示的32位整数(8B)。
校验和的算法如下:
对“消息头+会话头+事务头+操作信息”按32位异或,对异或结果取反后的值为校验和。
1。有谁能告诉我有关dephi中对16进制的运算
2。取反运算如何实现
3。字符可以参加运算?
解决方案 »
- 求一算法,关于SQL表 和 TreeView!
- 求助:如何统计本机网络流量?
- 我的编程资源在线(www.delphi163.com)网站注册人数大增,高兴,散分,同时感谢CSDN的朋友
- 问一个 难解的问题! 我远程拨号,找到异地的主机 更新数据库的纪录!在更新过程断线了怎么办的?
- 请问谁用过Graphics32,听说Graphics32控件可以反走样画线,请问如何用Graphics32画一条线。
- 那位大虾解释一下Delphi消息处理中的message crackers
- madyak(无天),您好(后续贴子二)
- 难题,分不够可以再加,解决了马上给分,请各位高手指教,在线等候。
- 有这本书吗?谢谢回复!
- 统计下delphi程序员的工资
- 请问delphi可以读取数字信号吗?怎么做?
- 安装 delphi7 时出现“不能访问 Windows Installer 服务。可能是你在.....”
取反not
#11=17
$#11表示'17'
这里你还是没有说清楚啊 。
“消息头+会话头+事务头+操作信息”
这个里面可能所有的字符都有啊。
而且not处理后出现负数如何处理?
请你给个详细的例子可以吗?
急待处理?
这样你应该明白我的意思了吧。'X'的ASCII码是58,你所有的字符都是数字了
ord是chr的逆运算。
not怎么会出负数。你肯定理解错了,校验和要的是一个16进制的字符串,按byte来算。
消息头为 ='AABBCCD25478=:'ABcdF'';
会话头 ='FFCCBEG'SC'XXXPPYY';
事务头 ='XXYYBBDD';
操作信息 ='yyzzcc';
用dephi处理如何计算校验和,得到校验和(8Byte)
str := 'XXYYBBDD';
for i :=1 to Length(Str) do
begin
tmpstr := tmpStr+ord(Str[i])
end
这就可以得到你要的16进制的字符串,其他的如果给200分也许有人帮你写代码。
var a array[1..25] of byte;
i: Word;
Num: Byte;
......
begin
...
Num := 0;
for i := 1 to 25 do
Num := Num + a[i]; //累加和
Num := Num xor $FF; //Num 的反码 可以理解为按位取反
Num := Num + 1; //取反后加1为Num的补码 这是你需要的
....
//如果要Num的最高位取反则
Num := Num xor $80; 依次类推
end;楼主需理解“进制”与“数”的区别。无论一个数用多少进制表示 它的值是恒定的,“进制”仅仅是一个数的表现形式而异。故16进制运算就10进制运算。