嘿,如何使用python将ip地址转换为DWORD?
我搜索了一段时间,但没有找到任何有用的东西。
感谢帮助者!
答案 0 :(得分:4)
不要推出自己的解决方案。使用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
不存在,您应该使用它而不是滚动自己的解决方案。
答案 1 :(得分:0)
假设你有一个正确的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])
答案 2 :(得分:-1)
Python没有DWORD类型。如果您需要它作为4字节字符串使用:
struct.pack('bbbb', *(int(x) for x in '127.0.0.1'.split('.')))