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

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










