如何用C语言实现2~62进制之间的任意转换?

2026-05-20 00:260阅读0评论SEO教程
  • 内容介绍
  • 相关推荐

本文共计703个文字,预计阅读时间需要3分钟。

如何用C语言实现2~62进制之间的任意转换?

字符转换的符号表示为[0-9a-zA-Z],最多包含16个字符,最大可表示62进制。

思路是:原进制先转换为10进制,再转换为目标进制。

疑问:对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行转换。

进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制。

思路是原进制先转换为10进制,再转换到目标进制。

疑问:

对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最后再将负号补回来,我认为这种做法是不对的。

正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换为十进制后在转换为其他进制(如果有小伙伴知道如何直接将二进制转换为任意进制的方法可以留言告诉我,不胜感激。注意这里的任意进制不是单纯的8 16等2的幂次进制,还有其他的比如7、9等)。

阅读全文

本文共计703个文字,预计阅读时间需要3分钟。

如何用C语言实现2~62进制之间的任意转换?

字符转换的符号表示为[0-9a-zA-Z],最多包含16个字符,最大可表示62进制。

思路是:原进制先转换为10进制,再转换为目标进制。

疑问:对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行转换。

进制转换的符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制。

思路是原进制先转换为10进制,再转换到目标进制。

疑问:

对于负数,有小伙伴说可以直接将符号丢弃,按照整数进行进位转换,最后再将负号补回来,我认为这种做法是不对的。

正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换为十进制后在转换为其他进制(如果有小伙伴知道如何直接将二进制转换为任意进制的方法可以留言告诉我,不胜感激。注意这里的任意进制不是单纯的8 16等2的幂次进制,还有其他的比如7、9等)。

阅读全文