题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import sys def IpToNumber(ip): res = '' for i in range(len(ip)): ip[i] = str("{0:b}".format(int(ip[i]))) if len(ip[i]) < 8: for j in range(8-len(ip[i])): ip[i] = '0' + ip[i] res += ip[i] return int(res,2) def NumberToIp(num): binNum = str("{0:b}".format(int(num))) if len(binNum) < 32: for i in range(32-len(binNum)): binNum = '0' + binNum ip1 = int(binNum[0:8],2) ip2 = int(binNum[8:16],2) ip3 = int(binNum[16:24],2) ip4 = int(binNum[24:32],2) ip = str(ip1)+'.'+str(ip2)+'.'+str(ip3)+'.'+str(ip4) return ip for a in sys.stdin: flag = 'num' for i in a: if i == '.': flag = 'ip' if flag == 'ip': a = a.split('.') print(IpToNumber(a)) else: a = int(a) print(NumberToIp(a))