亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將基中的整數轉換為字符串?

如何將基中的整數轉換為字符串?

暮色呼如 2019-06-20 15:21:23
如何將基中的整數轉換為字符串?Python允許通過以下方式輕松地從給定基的字符串創建整數int(str, base).我想做相反的事情:從整數創建字符串,也就是我想要一些功能int2base(num, base),以便:int(int2base(x, b), b) == x函數名稱/參數順序不重要。任何數字x和基b那,那個int()會接受的。這是一個很容易編寫的函數:實際上,它比在這個問題中描述它更容易。然而,我覺得我一定是錯過了什么。我知道這些功能bin, oct, hex,但我不能使用它們有幾個原因:這些函數在早期版本的Python上是不可用的,我需要與其兼容(2.2)。我想要一個通用的解決方案,在不同的基礎上可以稱為相同的方法。我想允許2,8,16以外的基地相關Python優雅的int反函數(String,base)python中使用遞歸的整數到基x系統Python中的基62轉換如何將整數轉換為Python中最短的url安全字符串?
查看完整描述

3 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

如果您需要與Python的舊版本兼容,可以使用gmpy(它確實包括一個快速的、完全通用的int-string轉換函數,并且可以為這樣的古老版本構建-您可能需要嘗試較早的版本,因為最近的版本還沒有經過值得尊敬的Python和GMP版本的測試,只是最近的版本而已),或者,為了更低的速度但更方便,使用Python代碼-例如,最簡單的:

import string
digs = string.digits + string.ascii_lettersdef int2base(x, base):
    if x < 0:
        sign = -1
    elif x == 0:
        return digs[0]
    else:
        sign = 1

    x *= sign
    digits = []

    while x:
        digits.append(digs[int(x % base)])
        x = int(x / base)

    if sign < 0:
        digits.append('-')

    digits.reverse()

    return ''.join(digits)


查看完整回答
反對 回復 2019-06-20
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

令人驚訝的是,人們只給出了轉換成小基數的解決方案(比英文字母的長度要小)。沒有人試圖給出一個將任意基從2轉換為無窮大的解。

下面是一個非常簡單的解決方案:

def numberToBase(n, b):
    if n == 0:
        return [0]
    digits = []
    while n:
        digits.append(int(n % b))
        n //= b    return digits[::-1]

所以如果你需要把一些超大的數字轉換成基地577,

numberToBase(67854 ** 15 - 102, 577),會給你一個正確的解決方案:[4, 473, 131, 96, 431, 285, 524, 486, 28, 23, 16, 82, 292, 538, 149, 25, 41, 483, 100, 517, 131, 28, 0, 435, 197, 264, 455],

之后,您可以將其轉換為任何您想要的基礎。


查看完整回答
反對 回復 2019-06-20
  • 3 回答
  • 0 關注
  • 578 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號