Wie kann ich eine Integerzahl in eine IPV4 Adresse umrechnen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
TanjaLorenz
User
Beiträge: 8
Registriert: Sonntag 8. April 2018, 09:28

Die Ganzzahl 3221225985 entspricht der IPV4 Adresse 192.0.2.1

Mit welchem Code kann ich die Ganzzahl in eine IPV4 Adresse umrechnen? In anderen Programmiersprachen liefert Google viele Ergebnisse, in Python leider nichts brauchbares.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

ich habe das recht flott ergoogeln können. https://docs.python.org/3/library/ipaddress.html
nezzcarth
User
Beiträge: 1633
Registriert: Samstag 16. April 2011, 12:47

Der Vollständigkeit halber: Die von __deets__ gezeigte Variante ist die bevorzugte, aber auch in Python geht natürlich der generische Weg über Bitshift und "Und", in dem man die einzelnen Oktette nach vorne schiebt und mit der Bitmaske '0.0.0.255' ver-und-et.

Code: Alles auswählen

In [1]: 3221225985  >> 24 & 255                                                                                                                               
Out[1]: 192

In [2]: 3221225985  >> 16 & 255                                                                                                                               
Out[2]: 0

In [3]: 3221225985  >> 8 & 255                                                                                                                                
Out[3]: 2

In [4]: 3221225985  & 255                                                                                                                                     
Out[4]: 1
TanjaLorenz
User
Beiträge: 8
Registriert: Sonntag 8. April 2018, 09:28

__deets__ hat geschrieben: Samstag 24. November 2018, 20:08 ich habe das recht flott ergoogeln können. https://docs.python.org/3/library/ipaddress.html
Vielen Dank für den Link. Allerdings verstehe ich nicht, wie ich daraus einen Code schreiben kann. Wahrscheinlich sehe ich den Wald vor lauter Bäumen nicht.

Kannst du mir mit ein paar Zeilen Code auf die Sprünge helfen?

Danke
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Da steht ein Beispiel, das genau das macht, was du willst. Offene Augen sind auch im Wald der Dokumentation notwendig.
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@TanjaLorenz: Na, einfach die Funktion ip_address() nehmen und dahin die vorliegende Ganzzahl übergeben:

Code: Alles auswählen

print(ipaddress.ip_address(3221225985))
Oder ist das eine Hausaufgabe? Wenn ja, dann sollte die Antwort von nezzcarth weiterhelfen. In dem Fall wäre die Programmiersprache auch nicht mehr so entscheidend (funktionale Programmierung und ähnliches mal außen vor gelassen), weil es nur auf die eigentliche Berechnung ankommt. Und natürlich braucht man ein wenig Basiswissen, damit man ein lauffähiges Programm hat.
Antworten