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