因此,我试图用一些二进制字符串读取文件,即: 10000010 00000000 0000 **** ********。该脚本将*的转换为0和1,所以会有两个二进制字符串是这样的:Python将二进制字符串转换为虚线格式的IP地址
10000010 00000000 00000000 00000000 10000010和00000000 00001111 11111111
脚本将它们转换为IP地址,所以在这个例子中,我的脚本应该返回130.0.0.0和130.0.15.255
这是到目前为止我的代码:
def main():
text=open('filename', 'r').readlines()
for line in text:
words = line.split(" ")
words_2=list(words)
for char in words:
low_range=char.replace('*','0')
conversion=str(int(low_range, 2))
decimal='.'.join(map(str,conversion))
print(decimal)
for char in words_2:
high_range=char.replace('*','1')
conversion_2=str(int(high_range, 2))
decimal='.'.join(map(str,conversion_2))
print(decimal)
main()
当我运行我的代码,它打印出:
1.3.0
0
0
0
1.3.0
0
6.3
2.5.5
1.3.0
0
6.4
0
1.3.0
0
9.5
2.5.5
1.3.0
0
1.2.8
0
1.3.0
0
1.9.1
2.5.5
1.3.0
0
1.3.0
0
1.9.2
0
1.3.0
0
2.5.5
2.5.5
当我真的希望它打印出来:
130.0.0.0
130.0.63.255
130.0.64.0
130.0.95.255
130.0.128.0
130.0.191.255
130.0.192.0
130.0.255.255
任何人都可以帮助解释什么,我做错了什么?
非常感谢!完美的作品。假设我想在IP地址与0之间设置查找范围,并将IP地址设为1,例如在130.0.0.0-130.0.63.255之间。这会像添加一个“for i in range(ip)”循环一样简单吗? – ojbomb227