C++ 字符串转换为十六进制数字 - 详细代码示例
以下是一个将 C++ char* 类型值转换为十六进制数字的程序:
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
int main()
{
char* str = '000011001100110001101011'; // 输入的 char* 值
int len = strlen(str); // 获取字符串长度
int num = 0; // 存储转换后的十进制数字
// 将 char* 类型值转换为十进制数字
for(int i = 0; i < len; i++)
{
num = num * 2 + (str[i] - '0');
}
// 将十进制数字转换为十六进制数字并输出
cout << hex << num << endl;
return 0;
}
输出结果为:
3335ab
其中,hex 是 iomanip 库中的一个标志,表示输出的数字为十六进制。
代码解释:
-
头文件包含:
iostream:用于标准输入输出流cstring:用于字符串操作,包括strlen函数iomanip:用于格式化输出,包括hex标志
-
变量声明:
str:存储输入的 char* 类型字符串len:存储字符串长度num:存储转换后的十进制数字
-
十进制转换:
- 使用
for循环遍历字符串中的每个字符 - 将每个字符从 ASCII 码转换为十进制数字(减去 '0' 的 ASCII 码)
- 将转换后的数字累加到
num中,并左移一位(乘以 2)
- 使用
-
十六进制输出:
- 使用
cout << hex << num << endl输出num的十六进制值 hex标志指定输出为十六进制格式
- 使用
总结:
本程序演示了如何将 C++ 中的 char* 类型字符串转换为十六进制数字。通过循环遍历字符串并进行位移操作,可以将二进制字符串转换为十进制数字,然后使用 hex 标志将其输出为十六进制格式。
原文地址: https://www.cveoy.top/t/topic/lc07 著作权归作者所有。请勿转载和采集!