python编码进制转换_关于Python|进制转换问题

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于腾讯云,作者:算法与编程之美。

问题描述

给定n个十六进制正整数,输出它们对应的八进制数。

1 输入格式

输入的第一行为一个正整数n (1<=n<=10)。

接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

2 输出格式

输出n行,每行为输入对应的八进制正整数。

【注意】

输入的十六进制数不会有前导0,比如012A。

输出的八进制数也不能有前导0。

3 样例输入

2

39

123ABC

4 样例输出

71

4435274

解决方案

在直接进制转换较难时,可以找个“中间值”。即十八进制——十进制——八进制

示例代码

```pythondefjz(x):

s=0

a={'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}

x=str(x)[::-1]for i in range(len(str(x))):#转化10进制

if x[i] ina:

s+=a[x[i]]*16**ielse:

s+=int(x[i])*16**i

h=''

while s>=1:#转化2进制

h+=str(s%2)

s=s//2s=h#2进制

if len(s)%3==0:pass

else:

s+='0'*(3-len(s)%3)

p=''

for i in range(0,len(s),3):#转化8进制(从右到左3个为一组)

k=s[i:i+3][::-1]

t=int(k[0])*2**2+int(k[1])*2**1+int(k[2])*2**0

p+=str(t)return int(p[::-1])

n=int(input())for i inrange(n):

g=input()print(jz(g))

结语

十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分 千分……

R进制中的数位排列是这样的……R^4 R3R2 R^1 R^0 R^-1 R^-2 R^-3……

规律:相邻的数位间相差该进制的一次方。

例如:

十进制的123=1×100+2×10+3×1

十进制的9876=9×1000+8×100+7×10+6×1

进制转换规律很简单,但很多人不知道,且实际操作很容易出错。

END


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部