关于UDP控件16进制发送解决思路

关于UDP控件16进制发送
要将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码字符

------解决方案--------------------

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;

------解决方案--------------------
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;