题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
2行核心代码解决问题。
没什么难的,加密就是把IP地址的4个部分分别转成二进制字符串拼接起来然后转成一个十进制数。
解密就是先把十进制数转成二进制然后按8位分成4段,每一段再还原成十进制的数即可。
唯一需要注意的是在十进制转二进制的时候(包括八进制和十六进制)会带2位数的前缀,需要通过切片+字符串格式化的方法来做成标准的进制格式。
再来介绍字符串格式化的规则吧:
{[field_name][!conversion][:][[fill]align][sign][#][0][width][,][.precision][type]}'.format()
看似一大串,其实用到的就几个地方,举个例子说明一下:
'{:0>8}'.format(str)
比如这小段代码,意思就是用0去填充一个右对齐的8位的字符串的空挡部分。
--------------------
下面是正式的解题代码:
while True:
try:
s1=input().split('.')
s2='{:0>32}'.format(bin(int(input()))[2:])
print(int(''.join(['{:0>8}'.format(bin(int(i))[2:]) for i in s1]),2))
print('.'.join(map(str,[int(s2[i:i+8],2) for i in range(0,32,8)])))
except:
break