如何将IP地址转换为DWORD?
嘿,我想用Python把IP地址转换成DWORD格式,应该怎么做呢?
我找了好一会儿,但没找到什么有用的资料。
谢谢大家的帮助!
3 个回答
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])
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
Python没有DWORD这种类型。如果你需要一个4字节的字符串,可以使用:
struct.pack('bbbb', *(int(x) for x in '127.0.0.1'.split('.')))