IP-Adressen in Zahlen umrechnen

[mathjax]
IP-Adressen kennt man meistens in der Form 217.193.124.173. Selbst erfahrene Computerbenutzer sind irritiert, wenn eine IP-Adresse in der Form 3653336237 angegeben ist. Doch natürlich ist die Adresse lediglich eine normale Zahl, auch wenn die Tupeldarstellung für uns übersichtlicher ist.

Definition Sei ip eine IP-Adresse. Dann ist Itup Tupeldarstellung der Form

Dann lautet die Zahlenschreibweise:

$$ip = 256^3 a + 256^2 b + 256 c + d$$

Offenbar kann man die Tupeldarstellung als vierstellige Zahl in einem Zahlensystem zur Basis 256 auffassen. Das macht es uns einfach, die einzelnen «Ziffern» der IP-Adresse auszurechnen:

$$a = \frac{ip}{256^3} \mathrm{mod} 256$$

$$ b = \frac{ip}{256^2} \mathrm{mod} 256$$

$$ c = \frac{ip}{256} \mathrm{mod} 256$$

$$d = ip \mathrm{mod} 256$$

Gießen wir diesen Algorithmus in Programmcode und erhalten so ein kleines Werkzeug, dass uns die Rechnung abnimmt:

Program IPAdress(input, output);

Uses Sysutils;

Var
    numIp : Int64;
    a,b,c,d : Integer;

Begin    (* Main *)

    If ParamStr(1) = '' Then 
    Begin
        Writeln('Usage: ip ');
        Halt;
    End;

    numIp := StrToInt64(ParamStr(1));
    a := (numIp DIV (256*256*256)) MOD 256;
    b := (numIp DIV (256*256)) MOD 256;
    c := (numIp DIV (256)) MOD 256;
    d := numIp MOD 256;

    Writeln(a, '.', b, '.', c, '.', d);

End.     (* Main *)

Comments are disabled for this post