先来看一下百度百科中对于八进制计数的定义:
一、十进制数转为八进制数
将十进制转换为八进制的主要方法是“除八取余法”。
例如下面的167,通过多次除八取余后得到了247的八进制数。
转换为C++程序的逻辑,就是利用一个while循环,再余数大于零的情况下,不断地除八取余,并将余数逆序存储下来。
//demical是传入的二进制数,返回一个字符串类型的八进制数
string demicalToOctal(int demical) {
string Oct; //Oct即返回的八进制字符串
int n = demical;
int i = 0;
int a[16] = { 0 };
while (n > 0) {
i++;
Oct = to_string(n % 8) + Oct; //to_string是将整形转换为字符串类型的一个函数
n /= 8;
}
return Oct;
}
二、八进制转回十进制
将八进制转回十进制,其实就是对上述过程的逆向操作。对一个八进制字符串数,从末尾到头部,逐次乘以8的n次方(n代表这个数字是倒数第几个)
//Octal是传入的八进制字符串,返回一个整数
int octalToDemical(string Octal) {
int l = Octal.size();
long long int num = 0;
int t = 1;
for (int i = l - 1; i >= 0; i--) {
num += (Octal[i] - '0')*t;
t *= 8;
}
return num;
}
结果展示:
完整代码可以到我的资源中下载,其实把上述两个代码块直接复制到你的cpp文件中就可以使用。