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

WBOY
发布: 2024-02-05 21:18:07
转载
440人浏览过

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

问题内容

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' 指定十六进制值。例如,

立即学习Python免费学习笔记(深入)”;

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 中是否有内置函数可以更改整数的基数?的详细内容,更多请关注php中文网其它相关文章!

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号