2

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

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

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

4

2 回答 2

2

.inet_anon()函数返回一个压缩的 32 位二进制值;您可以使用该struct模块将其转换为整数:

import struct
import socket

socket.ntohl(struct.unpack('I', socket.inet_aton('192.168.1.1'))[0])
于 2012-10-11T17:42:54.153 回答
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]
于 2012-10-11T17:45:42.563 回答