Konvertieren von IPv4-Adresse mit einem Hex-IPv6-Adresse in Python
Q: Schreiben Sie ein Programm, das den Benutzer auffordert, eine IP-Adresse wandelt dann diese zu einer Basis 10, Binär-und hex-Wert. Das Programm konvertiert dann den hex-Wert zu einem RFC3056 IPv6 6to4-Adresse.
Habe ich die Basis 10 und der binären Teile arbeiten, aber ich kann nicht scheinen, um meinen Kopf um den hex-Teil. Kann die format-string-Methode verwendet werden, die irgendwie auf das gleiche erreichen? Oder brauche ich zum importieren die IP-Adresse des Moduls in diesem Fall?
#!/usr/bin/python3
ip_address = input("Please enter a dot decimal IP Address: ")
"""This part converts to base 10"""
ListA = ip_address.split(".")
ListA = list(map(int, ListA))
ListA = ListA[0]*(256**3) + ListA[1]*(256**2) + ListA[2]*(256**1) + ListA[3]
print("The IP Address in base 10 is: " , ListA)
"""This part converts to base 2"""
base2 = [format(int(x), '08b') for x in ip_address.split('.')]
print("The IP Address in base 2 is: ", base2)
"""This part converts to hex"""
hexIP = []
[hexIP.append(hex(int(x))[2:].zfill(2)) for x in ip_address.split('.')]
hexIP = "".join(hexIP)
print("The IP Address in hex is: " , hexIP)
EDIT: Geschafft, konvertieren Sie die IP-Adresse als hex-Wert. Nun, wie wandle ich diesen hex-Wert in die IPv6-Adresse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
'2002::/16'
d.h.,'2002:7b2d:4359::'
in deinem Beispiel.In Python 3.3 könnten Sie
IP-Adresse
- Modul zu manipulieren, IPv4 -, IPv6-Adressen:Wenn Sie nur wollen, um die IPv4-Adressen in IPv6-Kontext (z.B. durch Weitergabe an
socket.connect()
erstellt mit dersocket.AF_INET6
Adress-Familie), können Sie einfach die syntax beschrieben, die in RFC4291, Abschnitt 2.2:I. e. Schreibe einfach
::ffff:
an die IPv4-Adresse ein und Sie erhalten eine gültige IPv6-zu-IPv4-Adresse. Wenn Sie stattdessen möchten, konvertieren Sie diese Adresse, um die weitere gemeinsame hexadezimaler form, ich empfehlen die Verwendung der standard-Bibliothekipaddress
Modul, das Sie erwähnt: