将hex格式的数据转换为字符串

时间:2011-03-04 03:54:19

标签: delphi hex

我有一些以十六进制格式化的数据(存储在字节中)我需要转换为字符串,数据应该是这样的

13 61 23 45 67 8F FF

和预期产出

13612345678FFF

我知道Chr()或IntToStr()函数不起作用,因为这个数据不是实际的十六进制代码,而是十六进制格式的字符串/数字,所以任何人都有这方面的建议吗?

2 个答案:

答案 0 :(得分:4)

这用于将动态字节数组转换为十六进制字符串:

function BytesToHex(aSource: TBytes): string;
begin
  SetLength(Result, Length(aSource) * 2);
  if Length(aSource) > 0 then
    BinToHex(aSource[0], PChar(Result), Length(aSource));
end;

如果源字节不在动态数组中,则必须稍微调整代码,但它应该让您大致了解如何执行此操作。

答案 1 :(得分:1)

使用您提供的示例,为什么不删除空格?

s := '13 61 23 45 67 8F FF';

stripped := StrUtils.ReplaceStr(s,' ','');

如果你的十六进制字符串不是太长,你可以得到这样的数字:

MyInt64 := StrToInt64('$' + stripped);

如果要将十六进制字符串作为字节数组,请查看HexToBin()