蓝桥杯 试题(Python) 基础练习 进制转换

十六进制转八进制

def HtO(number):
    B_str = ''
    O_str = ''
    HtB_Dict = {'0':'0000','1':'0001','2':'0010','3':'0011','4':'0100','5':'0101','6':'0110','7':'0111',
             '8':'1000','9':'1001','A':'1010','B':'1011','C':'1100','D':'1101','E':'1110','F':'1111'}
    BtO_Dict = {'000':'0','001':'1','010':'2','011':'3','100':'4','101':'5','110':'6','111':'7'}
    # 16进制转2进制
    for i in range(len(number)):
        B_str += HtB_Dict[number[i]]
    
    # 去掉高位0
    high_zero = 0
    for i in range(len(B_str)):
        if B_str[i] == '0':
            high_zero += 1
        elif B_str[i] == '1':
            break
    
    B_str = B_str[high_zero:]
    
    # 补0
    fill_zero_num = 3 - len(B_str) % 3
    
    if fill_zero_num != 3:
        for i in range(fill_zero_num):
            B_str = '0' + B_str
    # 2进制转8进制
    for i in range(len(B_str)):
        if (i + 1) % 3 == 0:
            O_str += BtO_Dict[B_str[i-2:i+1]]
    
    return O_str

# 输入
n = int(input())
numbers = []
for i in range(n):
    num_str = input()
    if len(num_str) <= 100000:
        numbers.append(num_str)
# 输出       
for number in numbers:
    print(HtO(number))

十六进制转十进制

# 输入
num_str = input()

# 输出
print(int(num_str,16))

十进制转十六进制

# 输入
num = int(input())

# 输出
print(hex(num)[2:].upper())
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值