将32位整数输入转换为IP地址时出错

时间:2018-06-11 03:52:37

标签: python python-3.x

我试图将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()

1 个答案:

答案 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: