我有一些以十六进制格式化的数据(存储在字节中)我需要转换为字符串,数据应该是这样的
13 61 23 45 67 8F FF
和预期产出
13612345678FFF
我知道Chr()或IntToStr()函数不起作用,因为这个数据不是实际的十六进制代码,而是十六进制格式的字符串/数字,所以任何人都有这方面的建议吗?
答案 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()
。