StrToHex и HexToStr unicode версия для Delphi XE

#1 2021.11.19 14:10:36

0

Данные функции конвертируют строку в HEX и обратно из HEX в строку. Как известно, с CodeGear Delphi 2007 начинается эра unicode версии Delphi, из-за этого возникли некоторые нюансы при использовании функций, работающие со строками.

Функция StrToHex — конвертирует строку в HEX
function StrToHex(const source: string): string;
var
StrAsBytes:TBytes;
i:cardinal;
begin
StrAsBytes := TEncoding.UTF8.GetBytes(source);
for i := 0 to length(StrAsBytes) - 1 do result:=result+IntToHex(StrAsBytes[i], 2);
end;


Функция HexToStr — конвертирует HEX в строку
function HexToStr(const source: string): string;
var
i, idx:Cardinal;
StrAsBytes:TBytes;
begin
SetLength(StrAsBytes, length(source) div 2);
i:=1;
idx:=0;
while i< =length(source) do
begin
StrAsBytes[idx]:=StrToInt('$'+source[i]+source[i+1]);
i:=i+2;
idx:=idx+1;
end;
result:=TEncoding.UTF8.GetString(StrAsBytes);
end;


Использование на примере StrToHex:
HexStr:=StrToHex(SourceStr);