home *** CD-ROM | disk | FTP | other *** search
- { Here is another set of routines to convert Decimal to Hex and vice versa}
-
- CONST
- HexString : array [0..15] of char = '0123456789ABCDEF';
-
- FUNCTION Dec2Hex (Num : word) : string;
- { Returns decimal value as hex string }
- VAR
- Loop : Byte;
- S : string [10];
-
- BEGIN
- S := ''; { empty string }
- for Loop := 1 to 4 do begin { do 4 chars }
- S := HexString [Lo (Num) and $F] + S; { use 4 lowest bits }
- Num := Num shr 4; { shift bits right 4 }
- end;
- Dec2Hex := '$' + S; { return string }
- END;
-
- FUNCTION Hex2Dec (S : string) : longint;
- { returns hexadecimal string as decimal value }
- VAR
- Len : byte absolute S;
- Loop : byte;
- Li : longint;
- Num : longint;
-
- BEGIN
- if S [1] = '$' then delete (S, 1, 1);
- if upcase (S [Len]) = 'H' then dec (S [0]);
- Num := 0;
- for Loop := 1 to Len do begin
- Li := 0;
- while
- (HexString [Li] <> S [Loop]) { compare letter }
- and
- (Li < 16)
- do
- inc (Li); { inc counter }
- if Li = 16 then begin
- Num := -1; { -1 if invalid }
- exit;
- end;
- Num := Num + Li shl ((Len - Loop) * 4); { add to Num }
- end;
- Hex2Dec := Num; { return value }
- END;
-