python - Python 中是否有内置函数可以更改整数的基数?

标签 python python-3.x math int logarithm

Python 能够将以 10 为基数的整数转换为以 X 为基数的整数,其中 2<=X<=36,使用 int()功能。对于任何整数来说,有一种方法可以将数字转换回基数 10,或者从基数 X 转换为基数 Y,这似乎是很自然的事情(除非你学过群论)。

我可以使用 from math import log 编写一个函数在基数之间进行转换,但我想知道 python 中是否已经内置了任何东西来完成此操作。

Python 3 中是否有内置函数可以在任意两个基数之间执行基数更改?是否存在类似于 int() 的约束(如果有)? ?

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

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

编辑#2:假设我想知道 100 的 9 进制是多少,我会使用以下内容, int('100', 9) 这将返回值 81。 现在假设我想取 81(以 9 为基数)并将其转换回以 10 为基数。Python 中是否有内置函数来完成此操作,或者有一种方法来标记第一个参数以表明我正在给它一个以基数表示的数字9?

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

int('0b1100100', 2)

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

最佳答案

当您谈到整数对象时,它与其基数 N 表示形式不同。

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

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

如果您想将整数的基数 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 的字符串以 N 为基数表示,因此:

>>> base_n_string = "81"
>>> base = 9
>>> int_to_base(int("81", 9), 9) == "81"
True

关于python - Python 中是否有内置函数可以更改整数的基数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50920126/

相关文章:

python - 从字典的键和值中删除字符?

python - Python 请求(AJAX 请求)数据丢失

python - 在函数内部导入库的优势?

python - Django查询关系

algorithm - 生成 n 个(严格为正)值的列表,使得该列表具有预定的均值 x 和标准差。开发者是

Python只读取excel单元格中的公式

Python for循环遍历目录文件

cookies - Python请求模块-获取响应cookie

math - 如何从相机校准数据绘制相机和图像位置?

algorithm - 将数字转换为特定范围内的等效数字