【发布时间】:2018-11-27 22:17:30
【问题描述】:
Python 能够使用int() 函数将基数为 10 的整数转换为基数 X,其中 2
我可以使用from math import log 编写一个函数来在基数之间进行转换,但我想知道是否有任何东西已经内置到 python 中来完成这个。
Python 3 中是否有一个内置函数来执行任意两个基之间的基更改?有哪些限制(如果有的话)与int() 的限制类似?
编辑:为了澄清,int() 仅解释以 10 为基数的第一个参数。我想将该参数指定为不同的基数表示。我想知道是否有一个内置函数需要两个参数作为基本表示。
示例(为什么int() 不是答案:
>>> int('100',9) == int(str(int('81',9)),10)
False
编辑#2:假设我想知道以 9 为底的 100 是多少,我会使用以下内容, 整数('100',9) 这将返回值 81。 现在说我想取 81(以 9 为底)并将其转回以 10 为底。Python 中是否有内置函数来完成此操作,或者有一种方法可以标记第一个参数以指示我给它一个以底为单位的数字9?
我知道有一种方法可以使用'ob' 为二进制指定此值,使用'0x' 指定十六进制值。例如,
int('0b1100100', 2)
这返回值 100,为第一个参数指定其他基数的前缀是什么。
【问题讨论】:
-
难道不是反过来,
int从[2..36] 到 10中的任何基数转换?这也将回答您的部分问题。 -
int()以您告诉它解释它的任何基数解释它的第一个参数。它不会“将基数为 10 的整数转换为基数 X”;它将基数 X 中的字符串转换为无基数整数,该整数恰好以基数 10 显示。老实说,我不明白您要对示例代码做什么。 -
@jwodder 示例代码是为了表明 int('100',9) 实际上不是“100 base 9”,而只是返回它的样子。我开始认为一个简单的否足以回答我的问题,但我会尝试编辑我的问题以澄清。另外,我不知道你所说的无基整数是什么意思。
-
我同意@squeamishossifrage,这绝对看起来是重复的。我认为问题可能是 XisUnknown 不知道如何表达这个问题。
-
@squeamishossifrage 你说得对,我很难用语言表达这一点。归结为最后一次编辑,如何指定字符串中给出的第一个数字不是以 10 为底的数字?
标签: python python-3.x math int logarithm