ASCII IP到主机字节顺序长

时间:2012-10-11 17:33:30

标签: python ip

我需要将ASCII IP 192.168.1.1转换为主机字节顺序。我试图使用以下功能但没有成功。

import socket
socket.ntohl(socket.inet_aton('192.168.1.1'))

然而,ntohl函数抛出一个错误,说它不能接受字符串,但需要一个int / long。

2 个答案:

答案 0 :(得分:2)

.inet_anon()函数返回打包的32位二进制值;您可以使用struct module将其转换为整数:

import struct
import socket

socket.ntohl(struct.unpack('I', socket.inet_aton('192.168.1.1'))[0])

答案 1 :(得分:0)

>>> socket.inet_aton.__doc__
'inet_aton(string) -> packed 32-bit IP representation\n\nConvert an IP address in string format (123.45.67.89) to the 32-bit packed\nbinary format used in low-level network functions.'

import struct
struct.unpack('>L', socket.inet_aton('192.168.1.1'))[0]