Добрый день!
Имеется такой код на php:
$secret = "AFD282B892711DCED1A4E15B0EDD10E1533754352C6527B5";
$secret = pack('H*', $secret);
В итоге получаем:
ЇТ‚ё’pОС¤б;ЭбS7T5,d'µ
Необходимо проделать тоже самое в С++/Delphi. Для Delphi сделано как-то так:
function HexToStr(HexStr : String; const Text : boolean = True) : string;
var
Hex : byte;
sTemp : string;
i : integer;
begin
Result := '';
if Length(HexStr) mod 2 <> 0 then
Exit;
for i := 2 to Length(HexStr) do
if i mod 2 = 0 then begin
sTemp := '$' + Copy(HexStr, i - 1, 2);
Hex := Byte(StrToInt(sTemp));
if Hex = $00 then begin
if Text then
Result := Result + ' '
else
Result := Result + #$00;
Continue;
end;
Result := Result + chr(Hex);
end;
end;
Далее:
HexToStr('AFD282B892711DCED1A4E15B0EDD10E1533754352C6527B5');
В итоге получаем нечто похожее с конца:
¯Ò¸pÎѤá;ÝáS7T5,d'µ
В PHP правильный вариант. Как проделать аналогичные преобразования в Delphi/C++?
Имеется такой код на php:
$secret = "AFD282B892711DCED1A4E15B0EDD10E1533754352C6527B5";
$secret = pack('H*', $secret);
В итоге получаем:
ЇТ‚ё’pОС¤б;ЭбS7T5,d'µ
Необходимо проделать тоже самое в С++/Delphi. Для Delphi сделано как-то так:
function HexToStr(HexStr : String; const Text : boolean = True) : string;
var
Hex : byte;
sTemp : string;
i : integer;
begin
Result := '';
if Length(HexStr) mod 2 <> 0 then
Exit;
for i := 2 to Length(HexStr) do
if i mod 2 = 0 then begin
sTemp := '$' + Copy(HexStr, i - 1, 2);
Hex := Byte(StrToInt(sTemp));
if Hex = $00 then begin
if Text then
Result := Result + ' '
else
Result := Result + #$00;
Continue;
end;
Result := Result + chr(Hex);
end;
end;
Далее:
HexToStr('AFD282B892711DCED1A4E15B0EDD10E1533754352C6527B5');
В итоге получаем нечто похожее с конца:
¯Ò¸pÎѤá;ÝáS7T5,d'µ
В PHP правильный вариант. Как проделать аналогичные преобразования в Delphi/C++?