【发布时间】:2017-12-22 21:54:02
【问题描述】:
下面的函数可以完美地将字符串转换为十六进制:
function String2Hex(const Buffer: AnsiString): string;
begin
SetLength(Result, Length(Buffer) * 2);
BinToHex(@Buffer[1], PWideChar(@Result[1]), Length(Buffer));
end;
ShowMessage(String2Hex('stackoverflow'));
这个结果:“737461636B6F766572666C6F77”
问题出在十六进制转字符串的功能上:
function Hex2String(const Buffer: AnsiString): string;
begin
SetLength(Result, Length(Buffer) div 2);
HexToBin(PWideChar(@Buffer[1]), @Result[1], Length(Buffer));
end;
ShowMessage(Hex2String('737461636B6F766572666C6F77'));
结果应该是“stackoverflow”,但没有任何反应。
有人可以帮我吗?
【问题讨论】:
-
@RemyLebeau:docs 还是说十六进制数必须使用小写字符; HexToBin 不识别大写字符。例如:“ACDC66”是一个无效字符串,您必须改用“acdc66”。请参阅文本参数部分,第一个项目符号。我从您下面的评论中看到您已将其报告为文档错误。感谢您在这里指出。在您有机会看到此回复后,我会在几分钟内删除我的 cmets。
标签: string function delphi hex