关于UDP控件16进制发送

树上猪 珠海天圆地方信息技术有限公司 技术负责人  2013-08-02 02:49:41
要将000D0102以16进制用Idudpclient或Idudpserver控制发给对方,不知怎样定义或转换成怎样的数据类型才能以16进制发送,而不是ASCII码的方式发送。最后有样例就好。
有试了几种都好像不行
第一种将16进制字符转为16进制数值发送
sendstr:=hexstrtohexdata(trim(memo2.Text));
idudpclient1.SendBuffer(sendstr,hextoint(edit1.Text)+2);
第二种直接以字符串转为指针类型发送
sendstr:=trim(memo2.Text);
idudpclient1.SendBuffer(Pointer(sendstr),hextoint(edit1.Text)+2);
第三种直接文本发送(这里面是把所有的类型统一转成16字符串格式了)
sendstr:=trim(memo2.Text);
idudpclient1.SendBuffer(sendstr,hextoint(edit1.Text)+2);
不知那一种是对的。如没有对的,那正确的应当怎样的转换或定义数据结构才能发送过去让对接收到的是16进制数值000D0102而不是ASCII码字符
...全文
421 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
asd杂草 2014-01-05
不知道楼主大哥解决了这个问题没有,麻烦请教一下小弟
回复
树上猪 2013-08-07
关于都是二进制都知道,但ASCII码0C与0X0C对于二进制来讲就是二个概念。我现在是要作这种区分
回复
arSavior 2013-08-07
回复
SQLDebug_Fan 2013-08-06
计算机里面都是二进制,只要数据结构一致,发送就是可以接收的。
回复
树上猪 2013-08-06
只有自已顶一下了,在 idudpclient1.SendBuffer里面Pchar(s)编译不过,是否可以用Pointer(s)代替
回复
树上猪 2013-08-02
Pchar(s)这里编译不过提示错误“there is no overloaded version of 'sendbuffer' that can be called with these arguments错误;如果改成Pointer(s)就可以编译过,但是否是一样呢?
回复
kuangning 2013-08-02
const HexStr='000D0102';
var  
  s:string;
  I:integer;
begin
  s:='';
  for I := 1 to length(HexStr) div 2 do
  begin
    s := s +char(strtoint('$'+HexStr[I*2-1]+HexStr[I*2]));
  end;
   idudpclient1.SendBuffer(pchar(s),length(s));
end;
回复
kuangning 2013-08-02

const HexStr='000D0102';
var  
  s:string;
  I:integer;
begin
  s:='';
  for I := 1 to length(HexStr) div 2 do
  begin
    s := s +char(strtoint('$'+HexStr[I*2-1]+HexStr[I*2-1]));
  end;
   idudpclient1.SendBuffer(pchar(s),length(s));
end;
回复
清风皎月 2013-08-02
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4925

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2013-08-02 02:49
社区公告
暂无公告