首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有内置函数来更改Python中整数的基值?

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

Stack Overflow用户
提问于 2018-06-19 03:15:30
回答 1查看 11.5K关注 0票数 1

Python能够使用2<=X<=36函数将基数为10的整数转换为基X,其中包含int()函数。似乎很自然(直到你已经学习了群论),有一种方法可以将数字转换回10基,或者对任何整数从基数X转换为基Y。

我可以使用from math import log编写一个函数来在基间进行转换,但是我想知道是否有什么东西已经内置到python中来完成这个任务。

Python 3中是否有一个内置函数来执行任意两个基之间的基更改?哪些约束(如果有的话)类似于int()的约束

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

代码语言:javascript
复制
>>> int('100',9) == int(str(int('81',9)),10)
False

编辑2:说我想知道基数9中的100是什么,我会使用以下int('100',9) --这将返回值81。现在假设我想取81 (在基9中)并将它转换回10基。是否有一个内置在Python中的函数来完成这个任务,还是用一种方法标记第一个参数,以表明我在基9中给它一个数字?

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

代码语言:javascript
复制
int('0b1100100', 2)

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 03:24:45

当您谈到一个整数对象时,它与它的基本N表示不一样。

在内部,整数以二进制形式存储,而整数对象本身没有基。只要指定基数和数字字符串对该基有效,就可以从任何基N中的任何数字字符串构造int对象。由于字母表中有10个十进制数字和26个字母,这通常限制在最多36位。

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

如果要将整数的基N表示形式返回为字符串,即反转int(n,N)操作,则有几个选项。您可以使用gmpy.digits(n, N),其中n是您的int,N是您想要的基础。这可能有点过分,因为它需要安装gmpy。

您也可以使用这样的方法:

代码语言:javascript
复制
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表示形式,这样:

代码语言:javascript
复制
>>> base_n_string = "81"
>>> base = 9
>>> int_to_base(int("81", 9), 9) == "81"
True
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50920126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档