如果说我通过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看一下,却不是这个原因,请问我哪个高手知道这是什么原因?谢谢!
我们=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看一下,却不是这个原因,请问我哪个高手知道这是什么原因?谢谢!
你有QQ吗?
我在在富翁,和CSDN上发帖,只有你一个人回答,太让我伤心! 那一堆23代表如果是汉字'我们'的十六进制
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 ] 注意,每个[]里面就是一个字节!那就是十六进制的形式!
SendStr := Chr($10) + Chr($53) + Chr($54) + Chr($00) + Chr($00) + SendStr + Chr($4E) + Chr($41) + Chr($0D) + Chr($0A);
Tem := Length(SendStr);
Comm1.WriteCommData(Pchar(SendStr),Tem);那个'我们'就相当于中间的那个Sendstr好的,谢谢,我试试!
~~~~^^^^
C E我的例子里,用format函数输出十六进制形式的字串,其中插了空格,如果不想要空格和[],可以删去。