16 A5 04 0A 01 A6 00 00 31 00 32 00 33 00 34 00 35
以上数据保存到数组中,数组定义为 buf:array[0..1024] of byte;
现要求获得校验码并保存于后面的两个字节中,上述内容计算出的校码码为:AC 30,最后形成有效的数据如下
16 A5 04 0A 01 A6 00 00 31 00 32 00 33 00 34 00 35 AC 30偶数位校验从第四个字节开始
AC=0A+A6+00+00+00+00+00 奇数位校验从第五个字节开始
30=01+00+31+32+33+34+35 (奇数位校验码)请问用delphi如何实现,谢谢
以上数据保存到数组中,数组定义为 buf:array[0..1024] of byte;
现要求获得校验码并保存于后面的两个字节中,上述内容计算出的校码码为:AC 30,最后形成有效的数据如下
16 A5 04 0A 01 A6 00 00 31 00 32 00 33 00 34 00 35 AC 30偶数位校验从第四个字节开始
AC=0A+A6+00+00+00+00+00 奇数位校验从第五个字节开始
30=01+00+31+32+33+34+35 (奇数位校验码)请问用delphi如何实现,谢谢
解决方案 »
- sql出错,???
- 开发一套娱乐城系统
- 探讨:接口引用 如何从一个接口变量取得其接口类型(GUID)?
- TreeView控件如何添加删除节点?在线等给分。过期散分
- 说服老板免费送100M邮箱给所有网民,散分
- 一个问题我不明白,请大家帮忙解答!
- QuickRep怎么获得每页行数和每行字数
- 哪里有Quick Report 3.6.2 professional下载?
- 请问TJPEGImage对象LoadFromStream后,如何清空其内容,以便再此执行LoadFromStream操作
- 求助....怎样实现Delphi后台驱动CAD..在线等待!
- 图像自动识别技术(求救)
- 哪位高手帮忙看一下代码哪里有错啊
xor1,xor2: BYTE;
i,j: integer;
b: array[0..18] of byte;
begin
b[0]:=$16;
b[1]:=$A5;
b[2]:=$04;
b[3]:=$0A;
b[4]:=$01;
b[5]:=$A6;
b[6]:=$00;
b[7]:=$00;
b[8]:=$31;
b[9]:=$00;
b[10]:=$32;
b[11]:=$00;
b[12]:=$33;
b[13]:=$00;
b[14]:=$34;
b[15]:=$00;
b[16]:=$35;
xor1:=0;
xor2:=0;
for i:=3 to 16 do
begin
j:= i mod 2;
if j=0 then
xor1:= xor1 xor b[i]
else
xor2:= xor2 xor b[i];
end;
b[17]:= xor2;
b[18]:= xor1;
end;
var
xor1,xor2: BYTE;
i: integer;
b: array[0..18] of byte;
begin
b[0]:=$16;
b[1]:=$A5;
b[2]:=$04;
b[3]:=$0A;
b[4]:=$01;
b[5]:=$A6;
b[6]:=$00;
b[7]:=$00;
b[8]:=$31;
b[9]:=$00;
b[10]:=$32;
b[11]:=$00;
b[12]:=$33;
b[13]:=$00;
b[14]:=$34;
b[15]:=$00;
b[16]:=$35;
xor1:=0;
xor2:=0;
for i:=1 to 7 do
begin
xor1:= xor1 xor b[i*2+1];
xor2:= xor2 xor b[i*2+2];
end;
b[17]:= xor2;
b[18]:= xor1;
end;
不会吧,mod是除法啊
如果一定怕乘法,加一下就行了