02 第三组(4个)进制转换

进制转换:二进制,十六进制、八进制、十进制

bin 二进制 oct 8进制 hex 十六进制 int 10进制

image-20240814211123499

  • 二进制 和十进制
#10进制转二进制
v1 = bin(48)
print(v1)

#二进制转10进制
v1 = '0b1010101'
v2 = int(v1, base=2)
  • 八进制 和十进制
#10进制转八进制
v1 = oct(48)
print(v1)

#八进制转10进制
v1 = '0o2233445'
v2 = int(v1, base=8)

十六进制 和十进制

#10进制转十六进制
v1 = hex(48)
print(v1)

#十六进制转10进制
v1 = '0x10abcd10101'
v2 = int(v1, base=16)
  • 练习

    """
    1、给你一个IP地址,请将IP地址 中的每个进制数字转换成对应二进制
    2、继续实现,将结果拼接起来:11000000101010000000101100010111,再将此二进制的字符串转换成10进制整数
    """
    # 方式1
    def ip_switch(ip):
        data_list = ip.split('.')  # 转换为:列表字符串[192.168.11.23]
        result = []
        for item in data_list:
            bin_string = bin(int(item)).replace('0b', '')  # 进制转换后为字符串
            if len(bin_string) % 8 == 0:
                result.append(bin_string)
            else:
                new_bin_string = (("0" * (8 - len(bin_string))) + bin_string)
                result.append(new_bin_string)
        return result
    
    # 方式2
    def ip_switch2(ip):
        result = []
        data_list = ip.split('.')
        for item in data_list:
            bin_string = bin(int(item))[2:]
            bin_8_string = bin_string.rjust(8, '0')
            result.append(bin_8_string)
    
        return result
    
    
    def main():
        ip = "192.168.11.23"
        ip_list = ip_switch2(ip)
        str_item = ''.join(ip_list)  # 将列表中的字符串通过join 进行拼接成一起
        v2 = int(str_item, base=2)
        print(v2)
    
    
    main()
    
posted @ 2024-09-25 22:50  jhchena  阅读(2)  评论(0编辑  收藏  举报