如何将IP地址转换为DWORD?

时间:2010-02-07 17:43:35

标签: python ip-address dword

嘿,如何使用python将ip地址转换为DWORD?

我搜索了一段时间,但没有找到任何有用的东西。

感谢帮助者!

3 个答案:

答案 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('.')))