gpt4 book ai didi

delphi - 使用 Delphi 2010,如何将 Unicode 字符串转换为十六进制字符串,然后再转换回来?

转载 作者:行者123 更新时间:2023-12-03 15:47:04 24 4
gpt4 key购买 nike

我使用的是 Delphi 2010,我需要能够将字符串转换为十六进制字符串,然后能够将该十六进制字符串转换回原始的 unicode 字符串。

例如,我的字符串是:Михаи́л Васи́льевич Ломоно́сов

我能够使用Warren P's StringToHex16 snippet here (我在下面粘贴了 Warren 的代码片段)将字符串转换为十六进制字符串,但我不知道如何将该十六进制字符串转换回原始的 unicode 字符串。

function StringToHex16(str: string): string;
var
i:integer;
s:string;
begin
s:='';

for i:=1 to length(str) do begin
s:=s+inttohex(Integer(str[i]),4);
end;
result:=s;

end;

使用链接的 StringToHex16 给我这个十六进制字符串:

041C04380445043004380301043B002004120430044104380301043B044C04350432043804470020041B043E043C043E043D043E03010441043E0432

我对这个主题有点天真,如果您能提供任何帮助将此十六进制字符串转换回原始输入,我将不胜感激。

最佳答案

链接函数为输入字符串中的每个字符生成四个十六进制数字,因此您的逆函数需要采用四个字符的 block 并将它们转换为一个。该函数使用IntToHex将输入字符串的数字字符代码转换为输出字符,IntToHex的逆是StrToInt与十六进制前缀,所以让我们使用它。

function HexToString16(const str: string): string;
var
i: Integer;
code: string;
begin
Result := '';
i := 1;
while i < Length(str) do begin
code := Copy(str, i, 4);
Result := Result + Chr(StrToInt('$' + code));
Inc(i, 4);
end;
end;

此函数假设输入是由 StringToHex16 或等效函数生成的。如果它不包含四个十六进制数字的倍数,则行为未定义。

关于delphi - 使用 Delphi 2010,如何将 Unicode 字符串转换为十六进制字符串,然后再转换回来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8233178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com