如何将十进制转换为X进制?
我想写一个程序,让用户输入一个十进制的数字,然后输入他们想转换成的进制。请问我能转换到的最高进制是多少,才不会让我的程序变得特别复杂?我在想9进制,因为在10进制之后,进制就开始用字母了。我这样想对吗?
注意:我说的复杂,是指对一个Python初学者来说复杂。我现在的编程水平还很低。
注意2:我想在不使用模块的情况下完成这个。
2 个回答
1
我可以转换到的最高进制是多少,而不会让我的程序变得非常复杂?
在ASCII中,最高是127进制。不过,这样会很难阅读,因为大写字母和小写字母看起来很相似,而且一些不可打印的ASCII字符需要很多复杂的转义处理。
最好把范围限制在大约36进制,因为这样可以使用数字和字母,没有什么混淆的地方。
在Unicode中,可以达到65536进制,具体取决于你想处理多少个Unicode字符。
我在考虑9进制,因为在10之后(10已经给出),进制开始使用字母。我这样想对吗?
你说得有点道理。
标准ASCII有9个数字符号。你并不一定要使用字母,但使用字母是很常见的。
你还可以使用很多既不是字母也不是数字的Unicode符号。
我想在不使用模块的情况下做到这一点。
这并不是特别相关。
现在可以看看其他关于进制转换的StackOverflow问题。
这里有个入门链接:62进制转换
这是搜索链接:https://stackoverflow.com/search?q=%5Bpython%5D+base+conversion
2
如果你把数字放在一个字符串里,那么你可以使用的进制就会很快变得很高。
radixdigits = '0123456789ABCDEFGHI...'
然后你可以用字符串的长度来做divmod()
,这样就能得到当前的数字,并用这个数字去查找字符串中的内容。