【每日一题】- 整数与ip地址之间的转换

题目描述

原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成
一个长整数。
举例:一个ip地址为10.0.3.193
每段数字 相对应的二进制数
10 00001010
0 00000000
3 00000011
193 11000001
组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。

数据范围:保证输入的是合法的 IP 序列

输入描述:
输入
1 输入IP地址
2 输入10进制型的IP地址
输出描述:
输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址

题解

此题也主要是考察各进制之间的转换。
十进制转成二进制

bin()

二进制转成十进制

int(0b101,2)

十进制转成八进制

oc()

八进制转成十进制

int(0147,8)

十进制转成十六进制

hex()

十六进制转成十进制

int(0x1AFE,16)

还有就是rjust()函数的应用
以即dict.values()代表字典中所有键对应的值的列表。可以对其聚合。sum、max、min,agv等。

code

while 1:
    try:
        string=input()
        if "." in string:
            str10=""
            list1=string.split(".")
            for i in range(4):
                list1[i]=bin(int(list1[i]))
                list1[i]=str(list1[i].replace("0b",""))#10进制转成2进制后二进制数前面会带有0b
                list1[i]=list1[i].rjust(8,"0")#  保持八位,用”0“在右边补齐8位
                str10+=list1[i] 

            str10=str(int(str10,2))       
            print(str10)
        else:
            nums=int(string)
            nums2=bin(nums)
            str2=str(nums2)
            str2=str2.replace("0b","")
            str2=str2.rjust(32,"0")
            list2=[]
            for i in range(0,32,8):
                a=str2[i:i+8]
                a="0b"+a
                a=int(a,2)
                list2.append(a)
            print(f"{list2[0]}.{list2[1]}.{list2[2]}.{list2[3]}")
    except:
        break
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨山小七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值