21xrx.com
2025-03-25 00:18:08 Tuesday
文章检索 我的文章 写文章
C++实现16进制字符串转10进制
2023-07-08 05:35:51 深夜i     15     0
C++ 16进制字符串 10进制转换

C++是一种多范式通用程序设计语言,拥有高效的编译器和广泛的应用场景。它支持各种数据类型和算法,也包括16进制字符串转10进制的转换。

16进制是计算机中常用的数据表示方式,但有时需要把它们转换为10进制方便人类阅读。我们通常使用函数和循环结构来实现此操作。以下是一段简单的C++代码实现:

#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int hexToInt(char hex) {
  if (hex >= '0' && hex <= '9')
    return hex - '0';
   else if (hex >= 'A' && hex <= 'F') {
    return hex - 'A' + 10;
  } else if (hex >= 'a' && hex <= 'f') {
    return hex - 'a' + 10;
  } else
    return -1;
  
}
int hexStringToDecimal(string hexString) {
  int decimal = 0;
  for (int i = 0; i < hexString.size(); i++) {
    int digit = hexToInt(hexString[i]);
    if (digit == -1)
      return -1; // 非法输入
    
    decimal += digit * pow(16, hexString.size() - i - 1);
  }
  return decimal;
}
int main() {
  string hexString = "FA9C";
  int decimal = hexStringToDecimal(hexString);
  cout << decimal << endl; // 输出 64156
  return 0;
}

以上代码定义了两个函数,`hexToInt`和`hexStringToDecimal`,分别用于将单个16进制字符转换为10进制数值,以及将整个16进制字符串转换为10进制数值。主函数只是用来调用`hexStringToDecimal`函数并输出结果。

在`hexStringToDecimal`函数中,我们使用了一个循环结构来从字符串的第一位到最后一位逐个将16进制字符转换为10进制数值,并将它们相加得到最终结果。在每一步转换中,我们首先调用`hexToInt`函数将16进制字符转换为10进制数值,然后乘以$16^{n-i-1}$,其中$n$是字符串长度,$i$是当前字符的下标,$-1$是为了从最高位开始处理。

需要注意的是,`hexToInt`函数会将16进制字符映射到0-15的数字范围内,其中字母A~F和a~f的转换需要用到ASCII码的相对位置,因为它们并不直接对应任何一种数字。如果输入的字符非法,我们会返回-1,表示转换失败。

综上所述,本文介绍了C++实现16进制字符串转10进制的方法和代码实例。这个过程需要将字符串逐个字符处理,通过函数和循环结构完成转换。借助这个技术,我们可以方便地将计算机内部的数据转换为更易于处理的格式。

  
  

评论区