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

整数与IP地址间的转换

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

考察进制之间的转换

  • bin():十进制转二进制
  • int():n进制转十进制
  • hex():十进制转十六进制
while True:
	try:
        # 输入IP地址
        strIP = input()
        # 输入10进制IP地址
        decIP = input()

        # 构造完整二进制形式
        lst = strIP.split('.')
        res = []
        for i in lst:
            # 低位
            binLow = bin(int(i))[2:]
            binHigh = ''
            # 高位补齐
            for j in range(8-len(binLow)):
                binHigh += '0'
            res.append(binHigh+binLow)
        # 二进制转十进制
        decimal = int(''.join(res),2)
        print(decimal)

        # 十进制转二进制
        binIP = bin(int(decIP))[2:]
        binHigh = ''
        # 构造完整二进制长度
        for i in range(32-len(binIP)):
            binHigh += '0'
        binIP = binHigh + binIP
        # 构造IP标准形式
        res = []
        for i in range(4):
            res.append(str(int(binIP[i*8:i*8+8],2)))
        IP = '.'.join(res)
        print(IP)
	except:
    	break
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务