作为更大的应用程序的一部分,我试图将IP地址转换为二进制.目的是稍后计算LAN唤醒流量的广播地址.我假设有一种更有效的方式来做我想的方式.这是通过八位字节分解IP地址,在必要时将0添加到每个八位字节的开头,将每个八位字节转换为二进制,然后组合结果.我应该看看netaddr,套接字还是完全不同的东西?
示例:从192.168.1.1到11000000.10101000.00000001.00000001
目的是稍后计算 Wake on LAN 流量的广播地址
import ipaddr
print ipaddr.IPNetwork('192.168.1.1/24').broadcast
# -> 192.168.1.255
Run Code Online (Sandbox Code Playgroud)
在 Python 3.3 中,ipaddress模块:
#!/usr/bin/env python3
import ipaddress
print(ipaddress.IPv4Network('192.162.1.1/24', strict=False).broadcast_address)
# -> 192.168.1.255
Run Code Online (Sandbox Code Playgroud)
要完全匹配您问题中的示例:
# convert ip string to a binary number
print(bin(int(ipaddress.IPv4Address('192.168.1.1'))))
# -> 0b11000000101010000000000100000001
Run Code Online (Sandbox Code Playgroud)
你想到下面的东西?
ip = '192.168.1.1'
print '.'.join([bin(int(x)+256)[3:] for x in ip.split('.')])
Run Code Online (Sandbox Code Playgroud)
我同意其他人,你可能应该避免转换为二进制表示来实现你想要的.
| 归档时间: |
|
| 查看次数: |
19791 次 |
| 最近记录: |