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

# 举例:一个ip地址为10.0.3.193
# 每段数字             相对应的二进制数
# 10                   00001010
# 0                    00000000
# 3                    00000011
# 193                  11000001
#
# 组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。
# 输入:
# 10.0.3.193
# 167969729
# 输出
# 167773121
# 10.3.3.193

def to_int(ips):
    bins = ''
    for i in ips:
        # 不足8位的,要前面加0补足
        n = len(str(bin(int(i))).replace('0b', ''))
        bins += '0' * (8 - n) + str(bin(int(i))).replace('0b', '')
    return int(bins, 2)


def to_ips(n):
    ips = []
    arr = []
    ips2 = bin(n).replace('0b','')
    # print(len(ips2)) # 28
    # print(ips2)      # 1010 00000011 00000011 11000001
    # 从后面开始每8位截取一次
    for i in range(3):
        s = ips2[-8:]
        arr.append(s)
        ips2 = ips2[0:-8]
    arr.append(ips2)
    arr = arr[::-1]
    # print(arr)
    for i in arr:
        ips.append(str(int(i, 2)))
    return '.'.join(ips)
while True:
    try:
        # ips = '10.0.3.193'.split('.')
        # n = int('167969729')
        ips = input().split('.')
        n = int(input())
        print(to_int(ips))
        print(to_ips(n))
    except:
        break
全部评论

相关推荐

二十岁的编程男神王大...:读博吧兄弟,你这绩点太好了,何必转码,另外哈哈哈真见到有括号标出来985的,这个不标注也知道吧
点赞 评论 收藏
分享
05-13 00:41
已编辑
北京邮电大学 Java
理性的杰克刷牛客:ai肯定要有的,最好学一下agent方向加一个智能客服什么的进去,并且多加点什么skill,mcp啥的,另外你现在的项目深度有些浅,这些功能都太简单了,而且也不是真正能扛高并发的实现,没有什么太大的亮点,可以去网上找点更有深度的项目。可以先投一些中小厂,有实习经历以后再去大厂,你现在这个大厂可能机会不大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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