#整数与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地址的第二个,这样以此类推到第四个。

全部评论

相关推荐

在等offer的火锅...:我去履历这么好,都找不到工作吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务