关于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码字符
...全文
698 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复

5,927

社区成员

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

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