python - 如何将整数转换为任何基数的字符串?

标签 python base radix

Python 允许通过

从给定基数的字符串轻松创建整数
int(str, base). 

我想执行相反的操作:从整数创建字符串, 即我想要一些函数 int2base(num, base),例如:

int(int2base(x, b), b) == x

函数名/参数顺序不重要。

对于 int() 将接受的任意数字 x 和基 b

这是一个易于编写的函数:实际上它比在这个问题中描述它更容易。但是,我觉得我一定错过了什么。

我知道函数 binocthex,但由于以下几个原因我不能使用它们:

  • 这些函数在旧版本的 Python 上不可用,我需要与 (2.2) 兼容

  • 我想要一个通用的解决方案,可以针对不同的碱基以相同的方式调用

  • 我想允许 2、8、16 以外的碱基

相关

最佳答案

令人惊讶的是,人们只给出了转换为小碱基(小于英文字母长度)的解决方案。没有尝试给出将任意基数从 2 转换为无穷大的解决方案。

所以这里有一个 super 简单的解决方案:

def numberToBase(n, b):
    if n == 0:
        return [0]
    digits = []
    while n:
        digits.append(int(n % b))
        n //= b
    return digits[::-1]

所以如果你需要将一些超大数字转换为基本的577

numberToBase(67854 ** 15 - 102, 577),会给你一个正确的解决方案: [4, 473, 131, 96, 431, 285, 524, 486, 28, 23, 16, 82, 292, 538, 149, 25, 41, 483, 100, 517, 131, 28, 0, 435, 197, 264, 455],

您可以稍后将其转换为您想要的任何基础

  1. 在某些时候你会注意到有时没有内置的库函数来做你想做的事情,所以你需要自己编写。如果您不同意,请发布您自己的解决方案,其内置函数可以将基数为 10 的数字转换为基数 577。
  2. 这是由于缺乏对某些基数中的数字含义的理解。
  3. 我鼓励您思考一下,为什么您的方法中的 base 仅适用于 n <= 36。完成后,很明显为什么我的函数返回一个列表并具有它所具有的签名。

关于python - 如何将整数转换为任何基数的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2267362/

相关文章:

python - 谁能解释一下Python中的函数闭包?

c++ - 如果不从派生构造函数调用基类构造函数会怎样?

web-services - 基于nusoap的扩展

php - 如何在 php 中定义自定义数字基数?

python - Selenium:如何打开空白的 Firefox 浏览器

java - 如何将java MD5加密代码移植到Python中?

python - 过滤 itertools 组合以获取动态数量的约束

algorithm - 尽管基数排序不是稳定排序,但为什么基数排序会划分它的元素?

Django 错误迁移嵌套模型而不迁移基础模型

c - 以 N 为基数的除法