Python中是否有内置函数来更改整数的基数?

Python中是否有内置函数来更改整数的基数?,python,python-3.x,math,int,logarithm,Python,Python 3.x,Math,Int,Logarithm,Python能够将基数为10的整数转换为基数为X的整数,其中2当您谈到整数对象时,它与它的基数N表示形式不同 在内部,整数以二进制形式存储,而integer对象本身没有基。可以从任意基数N中的任意数字串构造int对象,只要指定基数,并且数字串对该基数有效。由于字母表中有10个十进制数字和26个字母,因此通常限制为最多36个 基数2、8、10和16有一些特殊情况,因为它们是最常用的。对于这些基,可以在字符串表示本身中指定基。分别对2、8和16使用0b、0或0x前缀。十进制是默认值,也是使用最多的,

Python能够将基数为10的整数转换为基数为X的整数,其中2当您谈到整数对象时,它与它的基数N表示形式不同

在内部,整数以二进制形式存储,而integer对象本身没有基。可以从任意基数N中的任意数字串构造int对象,只要指定基数,并且数字串对该基数有效。由于字母表中有10个十进制数字和26个字母,因此通常限制为最多36个

基数2、8、10和16有一些特殊情况,因为它们是最常用的。对于这些基,可以在字符串表示本身中指定基。分别对2、8和16使用
0b
0
0x
前缀。十进制是默认值,也是使用最多的,因此不需要前缀

如果要将整数的基N表示形式返回为字符串,即反转操作int(N,N),则有几个选项。您可以使用
gmpy。数字(n,n)
其中
n
是您的整数,
n
是您想要的基数。这可能有些过分,因为它需要安装gmpy

您也可以这样使用:

import string

def int_to_base(n, N):
    """ Return base N representation for int n. """
    base_n_digits = digits + ascii_lowercase + ascii_uppercase
    result = ""
    if n < 0:
        sign = "-"
        n = -n
    else:
        sign = ""
    while n > 0:
        q, r = divmod(n, N)
        result += base_n_digits[r]
        n = q
    if result == "":
        result = "0"
    return sign + "".join(reversed(result))

不是反过来说,
int
从[2..36]中的任何基数转换为10吗?这也可以回答您的部分问题。
int()
以您告诉它的任何基解释它的第一个参数。它不“将以10为基数的整数转换为以X为基数的整数”;它将以X为基数的字符串转换为以10为基数显示的无基数整数。我真的不明白你想用你的示例代码做什么。@jwodder示例代码是为了说明int('100',9)实际上不是“100base-nine”,而是只返回它的一个表示形式。我开始认为一个简单的“不”就足以回答我的问题,但我会尝试编辑我的问题来澄清。另外,我不知道你所说的无基整数是什么意思。我同意@squemishossifrage,这绝对是一个重复。我想问题可能是未知的,因为我不知道如何表达这个问题。@squemishossifrage你是对的,我很难表达这个问题。可以归结为最后一次编辑,如何指定字符串中给定的第一个数字不是以10为基数?
int('0b1100100', 2)
import string

def int_to_base(n, N):
    """ Return base N representation for int n. """
    base_n_digits = digits + ascii_lowercase + ascii_uppercase
    result = ""
    if n < 0:
        sign = "-"
        n = -n
    else:
        sign = ""
    while n > 0:
        q, r = divmod(n, N)
        result += base_n_digits[r]
        n = q
    if result == "":
        result = "0"
    return sign + "".join(reversed(result))
>>> base_n_string = "81"
>>> base = 9
>>> int_to_base(int("81", 9), 9) == "81"
True