Python 将32位整数输入转换为IP地址时出错
我正在尝试将32位整数输入转换为IP地址,但很难正确打印IP地址 例如,我为我的程序提供了一个32位整数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
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我不太清楚