我正在尝试将某些基数转换为任何其他基数而不使用十进制转换的方法。
例如,程序将询问用户:
"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'是不同的数字以及空格,换行符等)有点让人费解。