我需要将ASCII IP 192.168.1.1
转换为主机字节顺序。我试图使用以下功能但没有成功。
import socket
socket.ntohl(socket.inet_aton('192.168.1.1'))
然而,ntohl函数抛出一个错误,说它不能接受字符串,但需要一个int / long。
答案 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]