2013-10-17 3 views
0

dpkt를 사용하여 패킷 디코더 처리를 배우고 싶습니다. 내가 '\x01\x02\x03\x04'-'1.2.3.4' 같은 IP 문자열로 변환하려면 어떻게dpkt.IP에 대해 IP 문자열을 16 진수로 변환

>>> from dpkt.ip import IP        
>>> ip = IP(src='\x01\x02\x03\x04', dst='\x05\x06\x07\x08', p=1) 
>>> ... 

: 사이트에, 나는 다음과 같은 예제 코드를 보았다?

답변

5

사용 socket.inet_aton :

>>> import socket 
>>> socket.inet_aton('1.2.3.4') 
'\x01\x02\x03\x04' 

가, 다시 점 분리 십진수를 얻을 수 socket.inet_ntoa을 사용하려면 :

>>> socket.inet_ntoa('\x01\x02\x03\x04') 
'1.2.3.4' 

UPDATE

파이썬 3.3 이상에서

, ipaddress.IPv4Address 다른 옵션입니다.

>>> import ipaddress 
>>> ipaddress.IPv4Address('1.2.3.4').packed 
b'\x01\x02\x03\x04' 
>>> ipaddress.IPv4Address(b'\x01\x02\x03\x04') 
IPv4Address('1.2.3.4') 
>>> str(ipaddress.IPv4Address(b'\x01\x02\x03\x04')) 
'1.2.3.4' 
+0

'inet_ntoa'는 점으로 구분 된 십진수 부분을 의미합니다. – gregb212

+0

@ gregb212, 지적 해 주셔서 감사합니다. 수정 됨. – falsetru