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

2024-09-29 21:34:54 发布

您现在位置:Python中文网/ 问答频道 /正文

Python可以使用int()函数将以10为基数的整数转换为以X为基数的X,其中2<;=X<;=36。似乎很自然(除非你研究过群论),有一种方法可以将任何整数的基数转换回以10为基数的数字,或者将基数X转换为以Y为基数的数字。在

我可以使用from math import log编写一个函数来在基之间进行转换,但是我想知道python是否已经内置了什么来实现这一点。在

Python3中是否有一个内置函数,用于在任意两个基之间执行基的更改?有哪些约束(如果有)与int()相似?在

编辑:为了澄清,int()只解释以10为基数的第一个参数。我想将参数指定为不同的基表示形式。我想知道是否有一个内置函数需要两个参数作为基表示。 示例(为什么int()不是答案:

>>> int('100',9) == int(str(int('81',9)),10)
False

编辑2:假设我想知道100在9的基数是多少,我会用下面的方法, 内景('100',9) 这将返回值81。 现在假设我要取81(在第9垒),然后把它变回10垒。Python中是否有一个函数可以实现这一点,或者有一种方法来标记第一个参数,以指示我给它一个以9为底的数字?在

我知道有一种方法可以为二进制指定这个值,使用'ob',十六进制值使用'0x'。例如

^{pr2}$

这将返回值100,为第一个参数指定其他基的前缀是什么。在


Tags: 方法函数fromimportlt编辑参数数字
1条回答
网友
1楼 · 发布于 2024-09-29 21:34:54

当你谈到一个整数对象时,它与它的基N表示不同。在

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

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

如果您想以字符串的形式返回整数的以N为底的表示形式,即反转运算int(N,N),您有几个选项。可以使用gmpy.digits(n, N),其中n是int,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))

使用该函数或类似函数,可以返回以N为底的整数的字符串基N表示形式,以便:

^{pr2}$

相关问题 更多 >

    热门问题