把 TBytes 转换为十六进制字符串
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 转换为十六进制字符串的更多相关文章
- 不使用C库函数(Sprintf)将void* 指针转换为十六进制字符串
#include <stdio.h> #include <stdint.h> #include <stdlib.h> void hexDump(void *ptr, ...
- 中文字符串转换为十六进制Unicode编码字符串
package my.unicode; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Uni ...
- ios十进制、十六进制字符串,byte,data等之间的转换
十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL = [NSStringstringWithFormat:@"%@& ...
- jquery如何将获取的颜色值转换为十六进制形式
jquery如何将获取的颜色值转换为十六进制形式:大家或许已经注意到了,在谷歌.火狐和IE8以上浏览器中,获取的颜色值是RGB形式,例如rgb(255,255,0),感觉非常不适应,或者在实际编码中不 ...
- php urlencode函数 (中文字符转换为十六进制)
urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%. urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其 ...
- iOS -- 十进制、十六进制字符串,byte,data等之间的转换
十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL = [NSStringstringWithFormat:]]]; 十六进制-& ...
- Java byte和hex十六进制字符串转换
在Java中字符串由字符char组成, 一个char由两个byte组成, 而一个byte由八个bit组成, 一个十六进制字符(0-F)实际上由4个字节byte即可表达, 因此, 从字节数组到十六进制字 ...
- 字符串、bute[]数组和十六进制字符串的相互转换
1.字符串转换成十六进制字符串 public static String str2HexStr(String str) { if (EncodingUtil.isEmpty(str)) { retur ...
- iOS 4s-6Plus屏幕自动适配及颜色转换为十六进制
iOS各种屏幕自动适配及颜色转换为十六进制 ★★★XLJMatchScreen自动适配屏幕★★★ 支持pod导入 pod 'XLJScreenMatching', '~> 1.0.3' 如果发现 ...
随机推荐
- 以ls命令为实例介绍命令基本格式
登陆Linux命令行会显示一行字符,例如[root@localhost ~ ]#, 其中root表示当前登陆用户,localhost表示主机名,~显示的是当前路径,(-表示当前用户的家目录),#表示 ...
- CF 628A --- Tennis Tournament --- 水题
CF 628A 题目大意:给定n,b,p,其中n为进行比赛的人数,b为每场进行比赛的每一位运动员需要的水的数量, p为整个赛程提供给每位运动员的毛巾数量, 每次在剩余的n人数中,挑选2^k=m(m & ...
- 【转载】ANSYS的APDL与C语言混合编程(实例)
原文地址:http://www.cnblogs.com/lyq105/archive/2010/05/04/1727557.html 本文讨论的不是利用C语言为ANSYS写扩展(或者说是用户子程序), ...
- 一个简单的Lua解释器
#include "stdafx.h" #include<stdarg.h> #include<stdlib.h> #include<stdio.h& ...
- [原创]cocos2d-x研习录-第二阶 概念类之精灵类(CCSprite)
上一节说布景层CCLayer是小容器,那么精灵类CCSprite就是容器添加的内容,它是构成游戏的主要元素.精灵这个名称应该是游戏专用,它表示游戏中玩家操作的主角.敌人.NPC(Non Player ...
- pt-query-digest用法
pt-query-digest用法 http://blog.csdn.net/wxc20062006/article/details/52387505
- 苹果Mac OS X显示隐藏文件的方法
苹果Mac OS X显示隐藏文件的方法有很多种,这里介绍一种最简单的, 方法/步骤 打开“终端”,根据自己的版本选择命令 早期的OS X(10.6~10.8)系统可以使用如下两条命令来开始 ...
- Qt 动画框架
最近一个项目中的需要做动画效果,很自然就想起来用qt animation framework .这个框架真的很强大.支持多个动画组合,线性动画,并行动画等.在此总结一下使用该框架一些需要注意的地方: ...
- Java 二进制与十六进制转换
Java 二进制与十六进制转换 二进制转换十六进制 /** * @description 将二进制转换成16进制 * * @param buf * @return */ public static S ...
- 一个可以设置所有子控件是否可以点击的Layout的实现
http://www.cnblogs.com/csonezp/p/4956315.html 最近在做一个功能,想在某个状态设置整个界面不可点击,后台任务执行完毕后再可以点击. 最直观的想法是直接让所有 ...