我想做一些不需要使用小数点转换就能将任意基数转换为其他基数的事情。
例如,程序会要求用户:
"Please put number which you would like to convert: 101"
"Please write from which base you want to convert: 2 " #base(2)
"Please write to which base you want to convert: 6" #base(6)
and will return value which converted from base(2) to base(6)
"Here is the result: 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 以内的基数......尽管数字表示的概念中,'a'和'A'是不同的数字,还有空格、换行符等,有点让人摸不着头脑。