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

Python 将32位整数输入转换为IP地址时出错,python,python-3.x,Python,Python 3.x,我正在尝试将32位整数输入转换为IP地址,但很难正确打印IP地址 例如,我为我的程序提供了一个32位整数100000011111000000111000111,得到的结果是..128..33023..8453891..2164196111 def main(): integer_input = input('Welcome. Please provide a 32 bit integer.') ip = '' value = 0 for i, d in enum

我正在尝试将32位整数输入转换为IP地址,但很难正确打印IP地址

例如,我为我的程序提供了一个32位整数
100000011111000000111000111
,得到的结果是
..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
添加到以下块中,即:

        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:

所需的输出是什么?
divmod
应该可以帮助您将32位int拆分为四个8位int,然后您只需要
str()
join()
。IP地址,例如128.164.122。21@floater我不太清楚