Как получить из hex число?

Как получить из hex число? Как получить из числа hex я вроде бы разобрался.

function StrToHex(str:string):string;
var
i:integer;
s:string;
begin
s := '';
 for i:= length(str) div 2 downto 1 do
    s:= s +' '+ Copy(str, 2 * i - 1, 2);
    result := s;
end;

print(StrToHex(IntToHex(854,4)));

Получаю:  56 03

А как теперь получить из hex 56 03 00 00 чисто 854?


Ответы (1 шт):

Автор решения: Alex R.

Немного внесу ясность и в вопрос, и ответ.

Hex-значения числа 854 это 0356. Автор вопроса располагает Hex-числа в обратном порядке с разделителем в виде пробела. Функция StrToHex следует переименовать в ReverseHexWithSpace.

Чтобы преобразовать обратно в число необходимо снова развернуть hex-число с помощью StrToHex, избавившись от пробелов и воспользоваться штатным преобразованием StrToInt с символом $ вначале, которое привел Old Skull.

program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils, System.StrUtils;

function ReverseHexWithSpace(str: string): string;
var
  i: integer;
  s: string;
begin
  s := '';
  for i := length(str) div 2 downto 1 do
    s := s + ' ' + Copy(str, 2 * i - 1, 2);
  result := s;
end;

var
  vHexTo, vHexFrom: string;

begin
  vHexTo := ReverseHexWithSpace(IntToHex(854, 4));

  vHexFrom := ReplaceStr(ReverseHexWithSpace(ReplaceStr(vHexTo, ' ', '')), ' ', '');

  Writeln(StrToInt('$' + vHexFrom));

  Readln;

end.
→ Ссылка