嘿,如何使用 python 将 ip 地址转换为 DWORD?
我搜索了一段时间,但没有发现任何有用的东西。
感谢帮助者!
不要推出自己的解决方案。使用socket
图书馆。
import socket
socket.inet_pton(socket.AF_INET, "127.0.0.1")
当它无法正确解析地址时,它会抛出异常,并且为事物编写自己的解析器只是解决问题的秘诀。
这样做还可以更轻松地将代码转换为 IPv6。为 IPv6 编写自己的地址解析器将是一个非常糟糕的主意,因为 IPv6 地址很复杂并且有一些奇怪的极端情况。
编辑:显然,这在 Windows 上不起作用。我不确定您应该如何在 Windows 上解析 IPv6 地址,但仍有一个库调用可以解析 IPv4 地址。它是,如果不存在socket.inet_aton
,您应该使用它,而不是滚动您自己的解决方案。socket.inet_pton
假设您有正确的 IPv4,您可以这样做,例如:
import struct
ip = "192.168.2.101"
components = map(int, ip.split("."))
asLittleEndianDword = struct.pack("<I", (components[0] << 24) |
(components[1] << 16) |
(components[2] << 8) |
components[3])
Python 没有 DWORD 类型。如果您需要它作为 4 字节字符串,请使用:
struct.pack('bbbb', *(int(x) for x in '127.0.0.1'.split('.')))