题解 | #整数与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
全部评论

相关推荐

qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
评论
点赞
2
分享
牛客网
牛客企业服务