我需要将 ASCII IP 转换192.168.1.1
为主机字节顺序。我尝试使用以下功能但没有成功。
import socket
socket.ntohl(socket.inet_aton('192.168.1.1'))
然而,ntohl 函数抛出一个错误,说它不能接受字符串,但需要一个 int/long。
该.inet_anon()
函数返回一个压缩的 32 位二进制值;您可以使用该struct
模块将其转换为整数:
import struct
import socket
socket.ntohl(struct.unpack('I', socket.inet_aton('192.168.1.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]