【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里:
第0001页 · 进制转换
日常生活中,我们常用的是十进制,而计算机中使用的进制是二进制,事实上,还有八进制、七进制和十六进制等等不同的进制方法。那么,对两个不同的进制,应该如何进行相互转换呢?我们先简要地整理一下步骤。
对于一个 P 进制的数,如果要转换为 Q 进制,可以分为以下两步:
- 将 P 进制数转换为十进制数;
- 将十进制数再重新转换为 Q 进制数。也就是说,我们以十进制为中介进行转换。
假如这是一个整数,相信大家都是没有问题的。这里提一下,如果这是一个小数,那么从十进制到 Q 进制的过程简单来说就是“乘 Q 取整,顺序排列”。
下面我们来解决一道以此为主题的问题(蓝色是OJ平台的链接哦):
【七进制数】给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。(其中,-10^7 <= num <= 10^7)
示例1 示例2 输入:num = 100 输入:num = -7 输出:“202” 输出:“-10”
【解题分析】具体实现过程比较简单,本题需要注意的是通过累除得到的结果应该要倒序之后才是正确形式。同时,对于 num 是正数、负数还是零要分开讨论。
【源码展示】
class Solution { public: string convertToBase7(int num) { std::string num_str = "", num_str2 = ""; if (num < 0) { num_str += '-'; num *= -1; } else if (num == 0) num_str = "0"; while (num != 0) { num_str2 += (num % 7) + 48; num /= 7; } int length = num_str2.length(); for (int it = length - 1; it >= 0; it--) { num_str += num_str2[it]; } return num_str; } };