Hmmm ... Ideen:
Du könntest das *16 durch shl 4 ersetzen - weis nicht ob das vll. automatisch passiert, aber naja.
Außerdem könntest du ein Array machen, in dem du direkt nachguckst. Lookup-Tabelle quasi.
Und statt inc() könntest du auch ein bitweises or nehmen.
Also sowas:
Delphi-Quellcode:
function HexToInt2(const S: string): Cardinal;
var
I: Byte;
const
Arr: Array[AnsiChar] = ....; // Vorher belegen mit den passenden Werten
begin
Result := 0;
for I := 1 to Length(S) do
Result := (Result shl 4) or Arr[AnsiChar(S[I])];
end;