回答
Python没有一个DWORD类型。如果您需要它作为4字节字符串,请使用:
struct.pack('bbbb', *(int(x) for x in '127.0.0.1'.split('.')))
如果endian-ness失控,你会做相反的('127.0.0.1'.split('。'))? – 2010-02-07 17:51:05
不,我只是在结果字符串上使用'[:: - 1]'。 – 2010-02-07 17:52:13
我会让'struct'处理字节序问题。 – Omnifarious 2010-02-07 18:25:28
,你能做到这一点,例如:
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])
请勿滚动您自己的解决方案。使用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. 将IP地址转换为IP范围
- 2. 如何将IP地址转换为MAC地址字节数组?
- 3. 如何将MAC地址转换为相应的IP地址?
- 4. 如何将IP地址转换为VB.NET中的IP HostEntry?
- 5. 将负数转换为IP地址python
- 6. 将IP地址转换为主机名
- 7. 将int转换为IP地址
- 8. 将IP地址char转换为long
- 9. 将整数值转换为IP地址
- 10. 将号码转换为IP地址(v4)
- 11. 将IP地址转换为位[]
- 12. 如何将本地IP地址转换为域
- 13. 将邻居MAC地址转换为IP地址ns-3
- 14. Python - 将IP地址列表转换为地址范围列表
- 15. Java:如何将MySQL DECIMAL(39,0)IP地址转换为字符串
- 16. 如何将IP地址转换为指向它的FQDN?
- 17. 如何将字符串转换为IP地址,反之亦然
- 18. 如何将IP地址转换为二进制(16)字符串?
- 19. 如何手动将整数转换为Ruby中的IP地址
- 20. 如何将整数数组转换为C++中的IP地址?
- 21. 如何将IP地址转换为BigQuery中的整数?
- 22. C++如何将IP地址转换为字节?
- 23. 如何将192,168,1,2,7,138转换为IP地址192.168.1.2的端口1930
- 24. UNIX:如何将IP地址转换为二进制代码
- 25. 如何将IP地址转换为国家名称
- 26. 如何将IP地址转换为与VB.NET或C#的URL#
- 27. 如何将静态IP地址转换为新域名
- 28. 如何在Android Java中将MAC地址转换为IP?
- 29. 如何将IP地址转换为国家?
- 30. Ruby:如何将ipv6的uo地址转换为ipv4的ip地址?
这是一个非常好的图书馆电话。 'struct.inet_pton'。你应该使用它而不是滚动你自己的解析器。 – Omnifarious 2010-02-07 18:26:36
...除非你使用Windows。它不在该平台上的套接字库中。但是,inet_aton是。 – 2010-02-07 23:50:14
参见http://stackoverflow.com/questions/317531/python-packing-an-ip-address-as-a-ctype-c-ulong-for-use-with-dll(例如)。 – 2010-02-08 02:56:35