2017-09-21 5 views
1

J'ai une adresse IP dans ce formatConvertir un bytearray en hexadécimal à un python adresse IP

b'\xd4\xfbuW' 

Je sais que cela est une adresse IP réelle, mais je ne sais pas comment je peux l'imprimer comme une adresse normale (comme 192.168.1.1) et également stocker dans ma mémoire comme une chaîne. Comment puis-je décoder cet hexagone byearearray?

Répondre

1

Vous pouvez utiliser les fonctions du module socket, par exemple:

import socket 

ip_string = '192.168.1.1' 
print(socket.inet_aton(ip_string)) 
print(socket.inet_ntoa(socket.inet_aton(ip_string))) 
print(socket.inet_pton(socket.AF_INET, '192.168.1.1')) 
print(socket.inet_ntop(
    socket.AF_INET, socket.inet_pton(socket.AF_INET, '192.168.1.1'))) 

packed_ip = b'\xd4\xfbuW' 
print(socket.inet_ntoa(b'\xd4\xfbuW')) 

Sortie

b'\xc0\xa8\x01\x01' 
192.168.1.1 
b'\xc0\xa8\x01\x01' 
192.168.1.1 
212.251.117.87 

Comme vous pouvez le voir, 192.168.1.1 correspondrait à \xC0\xA8\x01\x01 et b'\xd4\xfbuW' serait 212.251.117.87