如果说我通过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看一下,却不是这个原因,请问我哪个高手知道这是什么原因?谢谢!
解决方案 »
- 如何使窗体在桌面背景图片之上 桌面图标 之下显示,
- 如何访问网站山上的access 数据库?
- DbGridEh中,adoQuery的Sql语句如果有order by,为什么点击标题排序会出错?
- 一个从表更新的SQL语句怎么写?
- 什么叫模块化开发?? 如何进行模块化开发!!
- api 操控弹出菜单(#32768)
- 请问这是什么问题?
- verycd提前关了?
- 一个怪问题?能否将showmessage对话框的caption改变?
- 多台机器(全是 win98/delphi5)能做c/s开发么?如何做?
- query.post后提示“缺少更新或刷新的键列信息”??是怎么回事??
- 求代码:无闪烁地滚动PANEL。
你有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函数输出十六进制形式的字串,其中插了空格,如果不想要空格和[],可以删去。