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

整数与IP地址间的转换

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

#其实就是进制转换,倒腾来倒腾去麻烦,理顺了就还好,不难
#第一步,ip转二,合并后转十
in_ip = map(int,input().split('.'))
#构造二进制列表
bin_list = [bin(i)[2:].rjust(8,'0') for i in in_ip]
#合并二进制并转为十进制数字
bin_str = ''.join(bin_list)
int_str = int(bin_str,2)

#第二部,整数转ip
in_int = int(input())
bin_int = bin(in_int)[2:]
#判断转二进制后,二进制的长度,如果不能整除8,则右对齐,对齐长度为本身长度加上8-本身长度除8的余数,字符0补齐剩余位置
if len(bin_int) % 8 != 0:
    bin_str = bin_int.rjust(len(bin_int) + (8 - (len(bin_int) % 8)),'0')
else:
    bin_str = bin_int   #如果能整除8就不动
#构造列表,用于接收每个长度为8的二进制数,注意边界条件
list_str = []
for i in range(0,len(bin_str) + 1,8):
    if i + 8 <= len(bin_str):
        list_str.append(bin_str[i:i+8])
#构造列表,接收每一个二进制转化的十进制数,注意要二进制转十,然后转为字符串,才能合并
list_ip = [str(j) for j in [int(k,2) for k in list_str]]

print(int_str)
print('.'.join(list_ip))

#悬赏#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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