21xrx.com
2024-12-22 23:41:50 Sunday
登录
文章检索 我的文章 写文章
C++如何将16进制转换为10进制
2023-07-04 23:05:29 深夜i     --     --
C++ 16进制 转换 10进制

在C++编程中,有时需要将16进制数转换为10进制数。这种转换可以使用C++中的内置函数来实现,也可以手动编写转换算法来实现。

使用内置函数进行16进制转10进制:

C++中,使用stoi函数可以将16进制字符串转换为10进制整数。stoi函数使用语法如下:

int stoi (const string& str, size_t* idx = 0, int base = 10);

其中,str是要转换的字符串,idx是可选的指向下一个未转换的字符的指针,base是转换的进制数,默认为10进制。

下面是一个示例程序,演示如何将16进制字符串转换为10进制整数:

#include

#include

using namespace std;

int main() {

  string hex = "4D2"; // 16进制字符串

  int dec = stoi(hex, nullptr, 16); // 转换为10进制整数

  cout << dec << endl; // 输出10进制整数

  return 0;

}

输出结果为:

1234

手动编写算法进行16进制转10进制:

对于手动编写算法,可以使用以下步骤将16进制数转换为10进制数:

1. 将16进制字符串转换为10进制数

2. 对转换后的10进制数进行位运算,计算每位对应的10进制位数的权值

3. 将每位的权值相加,得到最终的10进制数

下面是一个示例程序,演示如何手动将16进制字符串转换为10进制整数:

#include

#include

using namespace std;

int hexToDec(const string& hex) {

  // 将16进制字符串转换为10进制数

  int dec = 0;

  for (int i = 0; i < hex.size(); i++) {

    if (hex[i] >= '0' && hex[i] <= '9') {

      dec = dec * 16 + (hex[i] - '0');

    } else if (hex[i] >= 'A' && hex[i] <= 'F') {

      dec = dec * 16 + (hex[i] - 'A' + 10);

    } else if (hex[i] >= 'a' && hex[i] <= 'f') {

      dec = dec * 16 + (hex[i] - 'a' + 10);

    }

  }

  // 对转换后的10进制数进行位运算,计算每位对应的权值

  int base = 1, result = 0;

  while (dec > 0) {

    int digit = dec % 10;

    dec /= 10;

    result += digit * base;

    base *= 16;

  }

  // 将每位的权值相加,得到最终的10进制数

  return result;

}

int main() {

  string hex = "4D2"; // 16进制字符串

  int dec = hexToDec(hex); // 手动转换为10进制整数

  cout << dec << endl; // 输出10进制整数

  return 0;

}

输出结果为:

1234

综上所述,C++中可以使用内置函数或手动编写算法来将16进制数转换为10进制数。对于简单的转换可以使用内置函数,对于复杂的转换可以手动编写算法来实现。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复