题解 | #整数与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-16 22:56
门头沟学院 C++
1234567800:歌尔今年给211开14-15k吗,我本地人连面试都不给😂
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务