C++如何实现进制转换_C++十进制转十六进制与二进制代码

14次阅读

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

C++如何实现进制转换_C++十进制转十六进制与二进制代码

在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::hexstd::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

基本上就这些。手动实现有助于理解原理,标准库则适合快速开发。根据需求选择合适方法即可。不复杂但容易忽略细节,比如大小写处理或负数情况(上述代码仅适用于非负整数)。

text=ZqhQzanResources