目录
一.C++给出的特定进制的转换标识符
十六进制:hex;
十进制 :dec;
八进制 :oct;
用法举例:
例一 十六进制转十进制、八进制;
#include <iostream>
using namespace std;
int main()
{
int x = 0x61;
cout << x << endl;//默认转化为十进制;
cout << dec << x << endl;//声明转化为十进制;
cout << oct << x << endl;//声明转化为八进制;
return 0;
}
运行结果为:
97
97
141
C:\Users\uaer\source\repos\12.25\x64\Debug\12.25.exe (进程 81244)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
例二 十进制转8进制、十六进制;
#include <iostream>
using namespace std;
int main()
{
int x = 97;
cout << dec << x << endl;//声明转化为十进制;
cout << hex << x << endl;//声明转化为八进制;
return 0;
}
运行结果为:
97
61
C:\Users\uaer\source\repos\12.25\x64\Debug\12.25.exe (进程 94372)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
二.特定进制格式输出问题
一 uppercase 十六进制格式字母变大写;
#include <iostream>
using namespace std;
int main()
{
int x = 0x6fabcd;
cout << hex << uppercase << x << endl;
return 0;
}
运行结果为:
6FABCD
C:\Users\uaer\source\repos\12.25\x64\Debug\12.25.exe (进程 90816)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
二 showpos在正数前加正号;
#include <iostream>
using namespace std;
int main()
{
int x = 0xff;
cout << showpos << x << endl;
return 0;
}
运行结果为:
+255
C:\Users\uaer\source\repos\12.25\x64\Debug\12.25.exe (进程 92828)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
三 showbase 十六进制前加0x,八进制前加0;
#include <iostream>
using namespace std;
int main()
{
int x = 97;
cout << hex << showbase << x << endl;
cout << oct << showbase << x << endl;
return 0;
}
运行结果为:
0x61
0141
C:\Users\uaer\source\repos\12.25\x64\Debug\12.25.exe (进程 95684)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
三.C++其他进制的转换方法
核心思路:建立中转站。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int m0, n0;//m0进制转化为n0进制
cin >> m0 >> n0;
char m[10001];
cin >> m;//输入m0进制下的数
int sum10 = 0;//中转站,转化为10进制数
for (int i = 0; i < strlen(m); i++)
sum10 += (m[i] - '0') * pow(m0, strlen(m) - i - 1);
//cout << sum10;
int x = -1;
int n[10001];//10进制数转化为n0进制的数
while (sum10 != 0)
{
x++;
n[x] = sum10 % n0;
sum10 /= n0;
}
for (int i = x; i >= 0; i--)//所选方法原因,数组需要逆序输出
cout << n[i];
return 0;
}