我试图将32位整数输入转换为IP地址,但我很难正确打印IP地址。例如,我为我的程序提供了一个32位整数10000000111111110000001100001111,我得到的结果是.......128........33023........8453891........2164196111
。以下是我的代码 - 感谢高级提供的任何帮助/
def main():
integer_input = input('Welcome. Please provide a 32 bit integer.')
ip = ''
value = 0
for i, d in enumerate(integer_input):
value *= 2
value += int(d)
if (i+1) % 8 == 0:
ip += str(value)
if (i+1) is not 32:
ip += '.'
value = 0
print(ip)
main()
答案 0 :(得分:0)
value
将重复用于所有八位字节,并且在打印出值后永远不会重置回0
。如果在计算八位字节后将value
重置为0,则会得到正确的结果。
基本上将value = 0
添加到以下块中,即:
if (i+1) % 8 == 0:
ip += str(value)
value = 0
执行:
>>> main()
Welcome. Please provide a 32 bit integer.10000000111111110000001100001111
.......128........255........3........15
此外,您永远不想使用is
来比较数字之间的相等性。即你应该有这个
if (i+1) != 32: