基础练习12-十六进制转八进制(python答案)

基础练习 十六进制转八进制

问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0{9}、大写字母{A}F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式   输出n行,每行为输入对应的八进制正整数。 注意   输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
提示 先将十六进制数转换成某进制数,再由某进制数转换成八进制。

n=int(input())
a = [[] for i in range(n)]
b = [[] for i in range(n)]
for i in range(n):
    a[i]=input()
for i in range(n):
    s,m=0,0
    for j in range(len(a[i])):
        if a[i][j].isdigit():
            s=s+(ord(a[i][j])-ord('0'))*pow(16,len(a[i])-j-1)
        elif a[i][j].isalpha():
            s=s+(ord(a[i][j])-ord('A')+10)*pow(16,len(a[i])-j-1)
    while s:
        m,s=s%8,int(s/8)
        b[i].append(m)
for i in range(n):
    for j in range(len(b[i])):
        print(b[i][len(b[i])-j-1],end="")
    print('\n')

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python中,可以使用int()函十六进制转换为十进制。int()函的第一个参是要转换的十六进制,第二个参是基,表示当前的进制,默认为十进制。所以,如果要将十六进制转换为十进制,只需要将十六进制作为int()函的第一个参即可。以下是一个示例代码: hex_num = "1A" # 十六进制 dec_num = int(hex_num, 16) # 将十六进制转换为十进制 print(dec_num) # 输出结果为26 在上面的示例中,hex_num是要转换的十六进制,int(hex_num, 16)将hex_num转换为十进制,结果存储在dec_num中。最后,通过print()函将结果打印出来,结果为26。请注意,int()函的第二个参base需要指定为16,以表示当前要转换的是十六进制。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [基于Python实现,可实现十进制转换二进制、十进制转换八进制、十进制转换十六进制十六进制转十进制的转换](https://download.csdn.net/download/sallyyellow/87378653)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [蓝桥杯 基础练习 十六进制转十进制 python题解 (一行代码)](https://blog.csdn.net/qq_36895331/article/details/112442715)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值