Python 如何将整数从任何基转换为任何其他基?

Python 如何将整数从任何基转换为任何其他基?,python,base,Python,Base,我试图做一些事情,将转换任何基地,以任何其他基地,而不使用十进制转换 例如,程序将向用户询问: “请输入您要转换的号码:101” “请写出要转换的基:2”#基(2) “请写下您要转换的基址:6”#基址(6) 并将返回从基(2)转换为基(6)的值 “结果如下:5” 不能将整数从一个基转换为另一个基。整数不变。将整数渲染为表示形式 从技术上讲,普通(常规)数字不是“十进制”数字。它是数字的十进制表示形式。同样适用于二进制、八进制、十六进制等 要将整数的字符串表示形式转换为2到36之间的任何基数,只需

我试图做一些事情,将转换任何基地,以任何其他基地,而不使用十进制转换

例如,程序将向用户询问:

“请输入您要转换的号码:101”
“请写出要转换的基:2”#基(2)
“请写下您要转换的基址:6”#基址(6)
并将返回从基(2)转换为基(6)的值
“结果如下:5”

不能将整数从一个基转换为另一个基。整数不变。将整数渲染为表示形式

从技术上讲,普通(常规)数字不是“十进制”数字。它是数字的十进制表示形式。同样适用于二进制、八进制、十六进制等

要将整数的字符串表示形式转换为2到36之间的任何基数,只需使用int()内置函数及其额外(可选)参数。Python假定字母“a”到“z”的顺序相当直观,表示大于9的“数字”

例如:
int('101101',2)->45和
int('101101',3)->280等等

为了将整数呈现为二进制、八进制或十六进制,可以简单地使用Python内置的字符串格式(尽管二进制和八进制是在CPython的2.2版之后添加的,我不记得细节了)


Python的标准库定义string.literal以正确的顺序返回,以用于任何不超过36的基,这可能不是巧合。。。可以想象的是,人们可以用它来把整数转换成从99到99的基数。。。虽然“a”和“a”是不同数字以及空格、换行符等的数字表示法的概念有点让人想入非非。

我有一个简单的方法,将数字转换为基数10,我们的检查点,然后从10开始

def base(k,b,n):
  def to_ten(k,b):
    index = [
      '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
      ]
    k = str(k)[::-1]
    r = 0
    for i in range(len(k)):
      r += (b**i)*int(index.index(k[i]))
    return r
  def from_base(k,b):
      r = ""
      while k>0:
          d = int(k%b)
          if d<10:
              r += str(d)
          else:
              r += chr(ord('A')+d-10)
          k //= b
      r = r[::-1]
      return r
  return from_base(to_ten(k,b),n)

k = input('Insert the number you\'d like to convert: ')
b = int(input('Insert the base you\'d like to convert ' + k + ' from: '))
n = int(input('Insert the base you\'d like to convert to: '))

print('Your answer is: ' + str(base(k,b,n)))
def基准(k、b、n):
def至_ten(k,b):
索引=[
‘0’、‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’、‘a’、‘b’、‘c’、‘d’、‘e’、‘f’、‘g’、‘h’、‘i’、‘j’、‘k’、‘l’、‘m’、‘n’、‘o’、‘p’、‘q’、‘r’、‘s’、‘t’、‘u’、‘v’、‘w’、‘x’、‘y’、‘z’
]
k=str(k)[:-1]
r=0
对于范围内的i(len(k)):
r+=(b**i)*int(索引索引(k[i]))
返回r
来自_基地的def(k,b):
r=“”
当k>0时:
d=int(k%b)

如果dStack溢出不是代码编写或教程服务。请回答您的问题并发布您迄今为止尝试的内容,包括示例输入、预期输出、实际输出(如果有)以及任何错误或回溯的全文。Base64编码是区分大小写的基本系统的一个示例。任意二进制流被分解为6位块,每个块以一个数字的形式以base-64表示:一个变量使用
a=0
B=1
Z=25
a=26
,…,
Z=51
0=52
<代码>9=61
+=62
/=63
。对于已经对
+
和/或
/
具有特殊含义的应用程序,还存在其他变体。您不能将整数从一个基转换为另一个基。整数不变。将整数渲染为表示。
为什么?我不明白,如果我有一个整数,比如说2进制的101,那么我把它“转换”成10进制的5,这有什么不对?