#整数与IP地址间的转换# | 简单除法
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
m = input().split('.') n = int(input()) ans1 = 0 for i in range(4): ans1 += int(m[i])*2**(24-8*i) print(ans1) iplist = [] for i in range(4): iplist.append(str(n//(2**(24-8*i)))) n = n%(2**(24-8*i)) ans2 = '.'.join(iplist) print(ans2)
先假设输入的格式都是正确的。
那么对于10.0.3.193这个ip地址来说,最后一个(也就是第四个)193仅仅是先转换成二进制再转换成十进制等于没变,第i个是先转换成二进制之后在后面加(24-8*i)个二进制的0再转换成十进制,实际上就是乘2的(24-8i)次方。所以我们实际上只要把ip地址的每一段乘对应的2的次方再相加即可。
对于167773121来说则相反,ip地址的第一个实际上就是除以2**24的余数,再把167773121换成167773121%(2**24)之后对于2**16的余数就是ip地址的第二个,这样以此类推到第四个。