Python能够使用2<=X<=36函数将基数为10的整数转换为基X,其中包含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:说我想知道基数9中的100是什么,我会使用以下int('100',9) --这将返回值81。现在假设我想取81 (在基9中)并将它转换回10基。是否有一个内置在Python中的函数来完成这个任务,还是用一种方法标记第一个参数,以表明我在基9中给它一个数字?
我知道有一种方法可以为二进制、使用'ob'和使用'0x'来指定十六进制值。例如,
int('0b1100100', 2)这返回一个值为100,是什么前缀来指定第一个参数的其他基。
发布于 2018-06-21 03:24:45
当您谈到一个整数对象时,它与它的基本N表示不一样。
在内部,整数以二进制形式存储,而整数对象本身没有基。只要指定基数和数字字符串对该基有效,就可以从任何基N中的任何数字字符串构造int对象。由于字母表中有10个十进制数字和26个字母,这通常限制在最多36位。
基础2、8、10和16有特殊情况,因为它们是最常用的。对于这些基,可以在字符串表示本身中指定基。对2、8和16分别使用0b、0o或0x前缀。十进制是默认的,也是最常用的,所以它不需要前缀。
如果要将整数的基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"
Truehttps://stackoverflow.com/questions/50920126
复制相似问题