Код: Выбрать все
Const
h_b: array[0..15,1..2] of string[4] =
(('0','0000'),('1','0001'),('2','0010'),('3','0011'),
('4','0100'),('5','0101'),('6','0110'),('7','0111'),
('8','1000'),('9','1001'),('a','1010'),('b','1011'),
('c','1100'),('d','1101'),('e','1110'),('f','1111'));
type
str8=string[8]; {16}
str10=string[11]; {10}
str32=string[32]; { 2}
procedure HexToBin(s: str8; var dv: str32);
Var x:byte;
begin
dv:='';
for x:=1 to 8 do
if Ord('9')>=Ord(s[x])
then dv:=dv + HexToBin[Ord(s[x])-Ord('0'),2
else dv:=dv + HexToBin[Ord(s[x])-Ord('a')+10,2]; \\ Это ему не нравится
end;
procedure BinToHex(dv: str32; s: str8);
Var x,y,z:byte;
Begin
s:='';
for x:=32 downto 1 do
begin
if x mod 4 = 0 then begin y:=1; z:=0 end;
if dv[x] = '1' then z:=z+y;
y:=y*2;
if x mod 4 = 1 then s:=HexToBin[z,1]+s;
end;
x:=1;
while (s[x]='0') and (x<8) do x:=x+1;
x:=x-1;
if x>0 then Delete(s,1,x);
end;
begin
HexToBin(dv1,s1);
writeln('16 pr = -', s1);
HexToBin(s1, s10); if s10='' then s10:='2147483648';
s10:='-'+s10;
writeln('10 pr = ', s10); {otvet}
readln;
End
Так надеюсь лучше)