Vielen dank euch beiden, jetzt steh ich nicht mehr auf dem Schlauch
Habe das auf jetzt wie folgt gelöst.
Delphi-Quellcode:
type
MD5Digest:
array[0..15]
of byte;
function MD5Read(S:
String): MD5Digest;
var
i: Byte;
c: Byte;
function BaseToInt(
const Value :
string;
const Base : Integer ) : Int64;
var
idx : Integer;
pdx : Integer;
begin
if ( Base >= 2 )
and ( Base <= 36 )
then
begin
Result := 0;
idx := 1;
while idx <= Length( Value )
do
begin
Result := Result * Base;
case Value[ idx ]
of
'
0' .. '
9' :
pdx := Ord( Value[ idx ] ) - Ord( '
0' );
'
A' .. '
Z' :
pdx := Ord( Value[ idx ] ) - Ord( '
A' ) + 10;
'
a' .. '
z' :
pdx := Ord( Value[ idx ] ) - Ord( '
a' ) + 10;
else
raise Exception.CreateFmt( '
Ungültiges Zeichen im Wert "%s" entdeckt!', [ Value ] );
end;
if pdx < Base
then
Result := Result + pdx
else
raise Exception.CreateFmt( '
Der Wert "%s" passt nicht zur Basis %d!', [ Value, Base ] );
idx := idx + 1;
end;
end
else
raise Exception.CreateFmt( '
Basis %d ausserhalb des gülitigen Bereichs 2..36', [ Base ] );
end;
begin
c := 1;
for i := 0
to 15
do begin
result[i] := BaseToInt(Copy(S, c, 2), 16);
Inc(c, 2);
end;
end;