以下是一个将 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

其中,hexiomanip 库中的一个标志,表示输出的数字为十六进制。

代码解释:

  1. 头文件包含:

    • iostream:用于标准输入输出流
    • cstring:用于字符串操作,包括 strlen 函数
    • iomanip:用于格式化输出,包括 hex 标志
  2. 变量声明:

    • str:存储输入的 char* 类型字符串
    • len:存储字符串长度
    • num:存储转换后的十进制数字
  3. 十进制转换:

    • 使用 for 循环遍历字符串中的每个字符
    • 将每个字符从 ASCII 码转换为十进制数字(减去 '0' 的 ASCII 码)
    • 将转换后的数字累加到 num 中,并左移一位(乘以 2)
  4. 十六进制输出:

    • 使用 cout << hex << num << endl 输出 num 的十六进制值
    • hex 标志指定输出为十六进制格式

总结:

本程序演示了如何将 C++ 中的 char* 类型字符串转换为十六进制数字。通过循环遍历字符串并进行位移操作,可以将二进制字符串转换为十进制数字,然后使用 hex 标志将其输出为十六进制格式。

C++ 字符串转换为十六进制数字 - 详细代码示例

原文地址: https://www.cveoy.top/t/topic/lc07 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录