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:假设我想知道 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 有一些特殊情况,因为它们是最常用的。对于这些基数,您可以在字符串表示形式本身中指定基数。您可以分别使用 0b
、0o
或 0x
前缀来表示 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 中是否有内置函数可以更改整数的基数?的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数260
191.63 KB下载数245
143.91 KB下载数1139
183.71 KB下载数640
644.84 KB下载数2752