function BytestoHexString(ABytes: TBytes; len: Integer): AnsiString;
begin
  SetLength(Result, len*);
  BinToHex(@ABytes[], PAnsiChar(Result), len);
end;

例子:

客户端:

IdTCPClient1: TIdTCPClient;
    Button1: TButton;
    mmo1: TMemo;

procedure TForm4.Button1Click(Sender: TObject);
var
  b:TBytes;
  Len:Integer;
  str:string;
begin
  IdTCPClient1.Host:= '127.0.0.1';
  IdTCPClient1.Port:= 8090;
  if not IdTCPClient1.Connected then
    IdTCPClient1.Connect;
  if IdTCPClient1.Connected then
  begin
    IdTCPClient1.IOHandler.WriteLn('QUERYDATA');
    mmo1.Lines.Add('向服务器发送:QUERYDATA') ;
    try
      IdTCPClient1.IOHandler.CheckForDataOnSource(250);//等待
      Len:= IdTCPClient1.IOHandler.InputBuffer.Size;
      IdTCPClient1.IOHandler.ReadBytes(b,len,false);
      mmo1.Lines.Add('接收到:' +BytestoHexString(b,length(b)));
    finally
      IdTCPClient1.Disconnect;
    end;
  end;
end;

服务端

IdTCPServer1: TIdTCPServer;
    Button1: TButton;
    Memo1: TMemo;

procedure TForm4.Button1Click(Sender: TObject);
begin
  if  IdTCPServer1.Active then
     IdTCPServer1.Active:= False;
  IdTCPServer1.Bindings.Clear;
  with IdTCPServer1.Bindings.Add do
  begin
    ip:= '0.0.0.0';
    Port:= 8090;
  end;
  IdTCPServer1.DefaultPort:= 8090;
  IdTCPServer1.Active:= True;

Memo1.Lines.Add('服务器监听已启动!')
end;

procedure TForm4.IdTCPServer1Execute(AContext: TIdContext);
var
  Cmd:string;
  b:TBytes;
begin
  if not AContext.Connection.IOHandler.Connected then
  begin
    Exit;
  end;
  try
    Cmd:= AContext.Connection.IOHandler.ReadLn;
    Memo1.Lines.Add('接收到数据:'+Cmd);
    if Cmd = 'QUERYDATA' then
    begin
      setlength(b,2);
      b[0]:= 1;
      b[1]:= 2;
      AContext.Connection.IOHandler.Write(b);
      Memo1.Lines.Add('发送:'+BytestoHexString(b,Length(b)));
    end;
  except
     Exit;
  end;
end;

把 TBytes 转换为十六进制字符串的更多相关文章

  1. 不使用C库函数(Sprintf)将void* 指针转换为十六进制字符串

    #include <stdio.h> #include <stdint.h> #include <stdlib.h> void hexDump(void *ptr, ...

  2. 中文字符串转换为十六进制Unicode编码字符串

    package my.unicode; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Uni ...

  3. ios十进制、十六进制字符串,byte,data等之间的转换

    十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL  = [NSStringstringWithFormat:@"%@& ...

  4. jquery如何将获取的颜色值转换为十六进制形式

    jquery如何将获取的颜色值转换为十六进制形式:大家或许已经注意到了,在谷歌.火狐和IE8以上浏览器中,获取的颜色值是RGB形式,例如rgb(255,255,0),感觉非常不适应,或者在实际编码中不 ...

  5. php urlencode函数 (中文字符转换为十六进制)

    urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其 ...

  6. iOS -- 十进制、十六进制字符串,byte,data等之间的转换

    十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL = [NSStringstringWithFormat:]]]; 十六进制-& ...

  7. Java byte和hex十六进制字符串转换

    在Java中字符串由字符char组成, 一个char由两个byte组成, 而一个byte由八个bit组成, 一个十六进制字符(0-F)实际上由4个字节byte即可表达, 因此, 从字节数组到十六进制字 ...

  8. 字符串、bute[]数组和十六进制字符串的相互转换

    1.字符串转换成十六进制字符串 public static String str2HexStr(String str) { if (EncodingUtil.isEmpty(str)) { retur ...

  9. iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制

    iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...

随机推荐

  1. python 多线程threading

    上一篇说到thread模块,我们要自己解决线程锁.其实也没有什么啦.只是现在的人都比较懒,既然有高级封装的函数为什么要自己写. 所以就有了threading. 其实都一样啦. 来一个最简单的threa ...

  2. odoo.cli.main()做了什么?

    先把代码贴过来 def main(): args = sys.argv[1:] # The only shared option is '--addons-path=' needed to disco ...

  3. 2017.1.8a版给信息源新增:max_len、max_db字段

    2017.1.8a版程序给信息源增加max_len.max_db字段,分别用于控制:获取条数.数据库保留条数. max_len的说明见此图: max_db的说明见此图: 当max_len和max_db ...

  4. JSTL中的scope属性

    前两天接到老大一个任务:要验证一下<c:import>能否动态地引入不同的文件.当时很兴奋,要知道在对日外包里面,这个也得算技术活了.呵呵! 说干就干,写了两个jsp文件:m.jsp  t ...

  5. Android模拟器部署历程

    由于想玩一款手机的游戏,本人手机Android系统版本太低,不能安装.所以就想在WindowS上安装一个模拟器,然后安装游戏.想法挺好.实现起来确实经历了一个坎坷的过程.为了让其他人少走弯路,本人把此 ...

  6. OneNote 2013 快捷键

    越来越喜欢onenote这个笔记本软件,找了下提高效率的办法,收藏学习下: 转载自:http://onenoter.com/2013/04/5792 记录笔记和设置笔记格式 键入和编辑笔记 操作 按键 ...

  7. linux net command /uboot command

    1. uboot command 读取寄存器内容 md [内存地址][长度] 修改内存地址 mw [内存地址][长度] 2. linux络命令  -- netstat -a (all)显示所有选项,默 ...

  8. KT vs SKT [20160816]

    KT:索尔 SKT:茂凯,塔里克,卡西奥佩娅 普朗克+烬,大招开团. 塔里克保护,眩晕.

  9. unity3d c#调用控件属性

    GUIText控件wenzi text 属性值 GameObject.Find("wenzi").guiText.text="修改内容"; 把你要获取的变量权限 ...

  10. XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 在安装Xcode前, ...