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

В следующей статье хотел бы рассмотреть простой алгоритм шифрования строк, но прежде хотел поделиться функциями StrToHex и HexToStr для строк в кодировке Unicode. Данные функции конвертируют строку в 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);