SOS-在线急等,关于串口接收数据时,中间有空格的有关问题
SOS----在线急等,关于串口接收数据时,中间有空格的问题!
如果说我通过COM发送两个汉字:我们
我们=CED2C3C7
我用串口调试助手测试时发现,如果用十六进制显示的话,那么
CED2C3C7 ==23 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 (假如说等这么多),这样一来,那第一个C就等于23 22 而我要的是c=2322,中间没有空格
一开始,我以为是:result:=result+inttohex(ord(str[i]),2);里,那个2的问题,但我用showmessage看一下,却不是这个原因,请问我哪个高手知道这是什么原因?谢谢!
------解决方案--------------------
呵~~ 你把下面的代码复制过去,测试一下:
var
S : String;
P : ^Byte;
I : integer;
begin
S := '我们 ';
P := @S[1];
for I := 0 to Length(S)-1 do
begin
memo1.Text := memo1.Text + format( '[ %.2x ] ',[P^]);
inc(P);
end;
end;
结果是:[ CE ] [ D2 ] [ C3 ] [ C7 ] 注意,每个[]里面就是一个字节!那就是十六进制的形式!
如果说我通过COM发送两个汉字:我们
我们=CED2C3C7
我用串口调试助手测试时发现,如果用十六进制显示的话,那么
CED2C3C7 ==23 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 (假如说等这么多),这样一来,那第一个C就等于23 22 而我要的是c=2322,中间没有空格
一开始,我以为是:result:=result+inttohex(ord(str[i]),2);里,那个2的问题,但我用showmessage看一下,却不是这个原因,请问我哪个高手知道这是什么原因?谢谢!
------解决方案--------------------
呵~~ 你把下面的代码复制过去,测试一下:
var
S : String;
P : ^Byte;
I : integer;
begin
S := '我们 ';
P := @S[1];
for I := 0 to Length(S)-1 do
begin
memo1.Text := memo1.Text + format( '[ %.2x ] ',[P^]);
inc(P);
end;
end;
结果是:[ CE ] [ D2 ] [ C3 ] [ C7 ] 注意,每个[]里面就是一个字节!那就是十六进制的形式!