C++中进制转换可通过循环取余和位操作实现,手动方法助于理解原理,标准库如hex和bitset适用于快速开发,注意处理非负整数及格式持久性。

在C++中实现进制转换,尤其是将十进制数转换为十六进制或二进制,可以通过多种方式完成。最常见的是使用循环取余法和位操作。下面介绍两种实用方法:一种是手动实现转换逻辑,另一种利用C++标准库简化输出。
十进制转十六进制(手动实现)
通过不断对十进制数除以16并记录余数,可以得到对应的十六进制数字。余数为10~15时,需转换为A~F。
示例代码:#include
using namespace std;
string decToHex(int n) {
if (n == 0) return "0";
string hex = "";
while (n > 0) {
int rem = n % 16;
if (rem < 10) {
hex = char('0' + rem) + hex;
} else {
hex = char('A' + rem - 10) + hex;
}
n /= 16;
}
return hex;
}
int main() {
int num = 255;
cout << "十进制 " << num << " 转十六进制: " << decToHex(num) << endl;
return 0;
}
输出结果:FF
立即学习“C++免费学习笔记(深入)”;
十进制转二进制(循环取余法)
每次对2取余,从低位到高位构建二进制字符串。
示例代码:string decToBin(int n) {
if (n == 0) return "0";
string bin = "";
while (n > 0) {
bin = char('0' + (n % 2)) + bin;
n /= 2;
}
return bin;
}
调用 decToBin(10) 将返回 "1010"。
使用C++标准库简化输出
如果只是需要打印结果,可直接使用std::hex和std::bitset。
#include
#include
using namespace std;
int main() {
int num = 255;
cout << "十六进制: " << hex << num << endl; // 输出 ff
cout << "二进制: " << bitset<8>(num) << endl; // 输出 11111111
return 0;
}
注意:hex会持续影响后续输出格式,如需恢复可用dec。
基本上就这些。手动实现有助于理解原理,标准库则适合快速开发。根据需求选择合适方法即可。不复杂但容易忽略细节,比如大小写处理或负数情况(上述代码仅适用于非负整数)。










