大侠帮忙,帮忙看下这段代码。

xingyulover 2010-01-11 09:57:52
procedure TForm1.SendHex(S: String);
var
s2:string;
buf1:array[0..50000] of char;
i:integer;
begin
s2:='';
for i:=1 to length(s) do
begin
if ((copy(s,i,1)>='0') and (copy(s,i,1)<='9'))or((copy(s,i,1)>='a') and (copy(s,i,1)<='f'))
or((copy(s,i,1)>='A') and (copy(s,i,1)<='F')) then
begin
s2:=s2+copy(s,i,1);
end;
end;
for i:=0 to (length(s2) div 2-1) do //这句看不懂。
buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));//这句看不懂。
Comm1.WriteCommData(buf1,(length(s2) div 2));
end;
是SPCOMM中发送十六进制的,有两句看不懂。
...全文
72 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingyulover 2010-01-11
  • 打赏
  • 举报
回复
谢谢各位恩人
kfcoffe 2010-01-11
  • 打赏
  • 举报
回复
for i:=0 to (length(s2) div 2-1) do //这句看不懂。
buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));//这句看不懂。

这里大概意思是将1个字符串中每次取2个字符然后组合为1个新的字符,这些新的字符最后都存放到1个字符数组里面
guanglin522 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sz_haitao 的回复:]
for i:=0 to (length(s2) div 2-1) do            //按字符串长度的一半进行循环
    buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));//每个字符组成一个16进制的字符串,转为值
[/Quote]
学习中
haitao 2010-01-11
  • 打赏
  • 举报
回复
'12ab'
=>
buf1[0]:=char($12)
buf1[1]:=char($ab)
xingyulover 2010-01-11
  • 打赏
  • 举报
回复
谢谢楼上的恩人,
buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));//每2个字符组成一个16进制的字符串,转为值
还不太明白,能不能做个例子
haitao 2010-01-11
  • 打赏
  • 举报
回复
for i:=0 to (length(s2) div 2-1) do //按字符串长度的一半进行循环
buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));//每2个字符组成一个16进制的字符串,转为值
hjkto 2010-01-11
  • 打赏
  • 举报
回复
up
haitao 2010-01-11
  • 打赏
  • 举报
回复
for i:=0 to (length(s2) div 2-1) do //按字符串长度的一半进行循环
buf1[i]:=char(strtoint('$'+copy(s2,i*2+1,2)));//每个字符组成一个16进制的字符串,转为值

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧