我试图将数字从十进制转换为基数6,反之亦然,但它无法正常工作。似乎我没有弄清楚算法让它发挥作用。有人可以向我解释如何在Python中实现它吗?
这是一个链接(Click here),它解释了如何做到这一点,但是当我尝试使用while循环在Python中创建它时,但是它没有工作并且转向是一个无限循环。最后,我不明白如何将所有剩余部分附加在一起以形成最终价值。
由于
答案 0 :(得分:1)
我希望这会对你有所帮助
def dec2hex(num):
if num == 0:
return 0
ans = ""
while num > 0:
ans = str(num%6) + ans
num /= 6
return int(ans)
def hex2dec(num):
if num == 0:
return 0
num = str(num)
ans = int(num[0])
for i in num[1:]:
ans *= 6
ans += int(i)
return ans
if __name__ == '__main__':
a = dec2hex(78)
b = hex2dec(a)
print a, b
输出是:
210 78
答案 1 :(得分:0)
一个方向很明确:
>>> int('42', 6)
26
另一种方式 - 将数字转换为基数6表示 - 比较棘手。似乎没有办法使用内置函数和没有循环来实现它。
所以可以做一些像
这样的事情def str_base(val, base):
res = ''
while val > 0:
res = str(val % base) + res
# val /= base # only valid for Py2
val //= base # for getting integer division
if res: return res
return '0'
这给出了例如:
>>> str_base(7,6)
'11'
直到现在,它只适用于基数< = 10;对于其他人,您需要定义字母表字符串:
import string
alphabet = string.digits + string.ascii_lowercase
并在
这样的函数中使用它res = alphabet[val % base] + res
它(可能)仍然不适用于负数。如果你需要这些,你必须再添加一些努力。