二进制,八进制,十进制,十六进制 不会有人这都不懂吧? 不会吧 不会吧 不会吧?
复制一下,转换原理,懂了原理,一通百通
a进制转b进制,分两步走
先是a进制转为十进制
按位权展开 相加:
从左往右 为 n-0位
二进制的位权: 第 n 位的 位权: 2n
八进制的位权: 第 n 位的 位权: 8n
十进制的位权: 第 n 位的 位权: 10n
十六进制的位权:第 n 位的 位权: 16n
例如:二进制 1010 转为十进制
num = 1x23 + 0x22 + 1x21 + 0*20 = 10
然后十进制转为b进制
核心思想:除基取余法
例如:十进制转十六进制:
十进制108
- 108/16 = 6 ··· 12
- 12<16 结束
0x6C
直接上代码:
def a_to_b(a, b, num):
'''
:param a: 表示a进制 int
:param b: 表示b进制 int
:param num: 表示不带前缀的a进制原数据 str
:return: 不带后缀的b进制的数据 str
'''
def a_to_ten(a, num):
len1 = len(num)
ans = 0
for i in range(len1):
if num[i] >= '0' and num[i] <= '9':
ans = ans + ((ord(num[i]) - ord('0'