Как получить из 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.