Am Samstag, 21. September 2002 12:43 schrieb Martin Schmitt:
> Hi!
>
> Ich suche nach einer M�glichkeit, mittels Perl die folgende Konvertierung
> vorzunehmen:
>
> 192.168.1.1 -> 0C.A8.01.01 -> 0CA80101 -> 212336897 (und wieder zur�ck)
das muss "C0" heissen, daher ist obiges ergebnis falsch!
>
das geht sehr einfach mit dem "Horner-Schema", dem schnellsten algorithmus,
ein polynom auszuwerten (hey, ein algorithmus!): betrachte $ip als polynom
zur basis 256, die einzelnen bytes sind dann die koeffizienten:
--------- wandler.pl -------------------------
$ip = q/192.168.1.1/;
@array = split /\./, $ip; # wie von soeren
$dec=0;
for($i=0;$i<@array;$i++) {
$dec = ($dec*256) + $array[$i];
}
print $dec;
-------------------------------------------------
ausgabe: 3232235777
der umgekehrte weg: division mit rest anwenden, d.h. in jeder iteration modulo
256 rechnen. das ergibt die jeweils n�chste ziffer von hinten (in
256-adischer darstellung). ziffern sammen und umgekehrt ausgeben (in hex).
-------------wandler2.pl------------------
$dec=3232235777;
while($dec!=0) {
$letzte_ziffer = $dec % 256;
push @tmp,$letzte_ziffer;
$dec = int($dec / 256); # letzte ziffer abschneiden
}
for($i=@tmp-1;$i>=0;$i--) { # r�ckw�rts ausgeben
printf "%x.",$tmp[$i]
}
---------------------------------------------
ausgabe: c0.a8. 1. 1. (daran musst du noch feilen)
hoffe, geholfen zu haben
joachim
--
Diese Nachricht von Joachim Ziegler haben Sie aus seinem $HOME erhalten
WWW: http://www.algorilla.de E-Mail: [EMAIL PROTECTED]
Lesen Sie mein Buch "Programmieren lernen": www.algorilla.de/PLMP
"Die in Umfragen und Wahlen ge�u�erten Meinungen repr�sentieren die
niedrigste, nicht die h�chste Ebene menschlicher Urteilsf�higkeit"
(Erich Fromm)
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org