Да, приходилось писать. Вот один из вариантов реализации:
Код:
HexToDec(HexValue : Text[30]) Res : Integer
n := 1;
FOR i := STRLEN(HexValue) DOWNTO 1 DO BEGIN
Ch := HexValue[i];
IF Ch <=57 THEN
Ch -= 48
ELSE
Ch -= 55;
Res += Ch * n;
n *= 16;
END;
Ну а обратно, соответственно, обратный алгоритм