2015-08-19 2 views
0

Как сделать следующее преобразование с помощью python?Преобразование IP-адресов в Hex

"172.1.3.1" >> "\xAC\x01\x03\x01" 

В настоящее время я могу сделать следующее преобразование:

"172.1.3.1" >> "AC010301" 

Однако я требую результатов, чтобы иметь шестнадцатеричные экранирующие символы, как показано выше.

+1

Где ваш код? – Blorgbeard

+0

''' .join (chr (int (i)) для i в« 172.1.3.1 ».split ('.'))' – metatoaster

+0

'' .join (str ("% 0.2X"% (int (i))) для i в «172.1.3.1» .split ('.')) – dsgdfg

ответ

3

Вы можете использовать socket модуль, если вы используете Python 2.

>>> import socket 
>>> socket.inet_aton("172.1.3.1") 
'\xac\x01\x03\x01' 

Это использует inet_aton:

Преобразования адреса IPv4 из формата четырехчисловой строки (для пример, «123.45.67.89») в 32-битный двоичный формат, в виде строки длиной четыре символа.


Если вы используете Python 3:

>>> import ipaddress 
>>> ipaddress.IPv4Address("172.1.3.1").packed 
b'\xac\x01\x03\x01' 
2
>>> socket.inet_aton('172.1.3.1') 
'\xac\x01\x03\x01' 
>>> struct.pack('>I', IPy.IP('172.1.3.1').int()) 
'\xac\x01\x03\x01'