题解 | #整数与IP地址间的转换#

整数与IP地址间的转换

http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea

##一、 输入IP地址,输出转换成10进制的IP地址
i1=list(map(int,input().split('.')))# int()不能直接以字符串列表为目标
n1=''
for k in i1:# 遍历IP地址每个部分
    n1=n1+'0'*(8-len(str(bin(k))[2:]))+str(bin(k))[2:]# 把IP地址每个部分便二进制后补0后变字符串相加
out1=int(n1,2)

##二、输入10进制型的IP地址,输出转换后的IP地址
i2=int(input())
if len(str(bin(i2))[2:])==32:
    n2=str(bin(i2))[2:]
else:
    n2='0'*(8-len(str(bin(i2))[2:])%8)+str(bin(i2))[2:]# 首段补0成8的倍数,方便后面分组
w=len(n2)//8# 看该二进制长串可以分几份,其实就是4,因为ipv4就是4份= =|||
tem=[]# 用于存放ipv4中每部分的数字,最后用'.'连接起来
for j in range(w):
    tem.append(int(n2[j*8:(j+1)*8],2))# 把每份二进制子串用int(,2)转换成十进制存入tem列表
out2='.'.join(map(str,tem))

print(out1)
print(out2)

【牛客站内】华为机试题练习记录

全部评论

相关推荐

10-11 17:30
湖南大学 C++
我已成为0offer的糕手:羡慕
点赞 评论 收藏
分享
在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务