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

整数与IP地址间的转换

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

while True:
    try:
        a = input()
        a = a.split('.')
        if(len(a) == 1):若输入的是需要还原的
            b = '{:32b}'.format(int(a[0])) #转化为32位二进制
            b = list(b)
            for i in range(len(b)): #不知道为啥他前面不会补齐。。手动补齐32位,转化为8位4位就没这种情况
            有大佬知道为啥不
                if(b[i] == ' '):
                    b[i] = '0'
            b = ''.join(b)
            b_1 = '0b' + b[:8] #截取四部分
            b_2 = '0b' + b[8:16]
            b_3 = '0b' + b[16:24]
            b_4 = '0b' + b[24:]
            c = []
            c.append(str(int(b_1,2))) #分别转为十进制
            c.append(str(int(b_2,2)))
            c.append(str(int(b_3,2)))
            c.append(str(int(b_4,2)))
            print('.'.join(c)) #十进制之间用.相连
        else: #若为IP地址
            e = []
            for i in a:
                d = int(i)
                d = '{:08b}'.format(d) #转化为8位二进制
                e.append(d)
            d = ''.join(e)
            print(int(d,2))最后转化为十进制
    except:
        break
华为机试题解(prod.by kedao) 文章被收录于专栏

华为实习机试题解

全部评论

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

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