Indy 9以十六进制格式读取数据

时间:2011-02-21 08:49:21

标签: delphi

我需要一种以十六进制格式而不是字符串格式从TCP连接读取数据的方法,以解释更多让我们举个例子:

当我们通过TCP连接发送“Test”等数据时,每个字符编码为ASCII码“54 65 73 54”,另一方面我使用currentReadbuffer读取数据,我需要的是以ASCII十六进制格式获取数据格式而不转换为字符串值。

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容将每个字符对从十六进制转换为字节:

function HexToByte(const value: string): Byte;
begin
  Result := StrToInt('$'+Value);
end;

取决于您使用的Delphi版本和您使用的字符编码(是单字节,多字节?),您需要将这些字节转换为字符。

假设您使用单字节字符集(ASCII,Windows-1252等)和Delphi< 2009年,转换很容易:

function ByteToChar(const value: Byte): Char;
begin
  Result := Char(Byte);
end;

编辑您的问题以使其更具体,您可以获得更专注的答案。

- 的Jeroen