我試圖將一個數字從小數轉換爲基數6,反之亦然,但它不工作。看來我並沒有搞清楚算法是否能夠正常工作。有人能向我解釋如何在Python中實現它嗎?在Python中將base 6轉換爲decimal,反之亦然?
這是一個鏈接(Click here),它給出瞭解釋如何做,但是當我嘗試使用while循環在Python中創建它,但它不工作,並且變成一個無限循環。最後,我不明白我將如何將所有剩下的東西加在一起形成最終價值。
由於
我試圖將一個數字從小數轉換爲基數6,反之亦然,但它不工作。看來我並沒有搞清楚算法是否能夠正常工作。有人能向我解釋如何在Python中實現它嗎?在Python中將base 6轉換爲decimal,反之亦然?
這是一個鏈接(Click here),它給出瞭解釋如何做,但是當我嘗試使用while循環在Python中創建它,但它不工作,並且變成一個無限循環。最後,我不明白我將如何將所有剩下的東西加在一起形成最終價值。
由於
我希望這將幫助你更
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
一個方向是明確的:
>>> 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
它(可能)仍然沒有負數工作。如果你需要這些,你必須再加一點努力。
你會怎麼做呢? –
-glglgl我在str_base函數中嘗試7,6時得到了這個: 它太長了,但它是這樣的:1.5e-3238e-3234.9e-3222.945 ... –
@Sab查看我的編輯。 – glglgl
我不會使用'hex'這個名字 - 通常你會想到16位的基數。 – glglgl