21xrx.com
2024-12-23 00:10:40 Monday
登录
文章检索 我的文章 写文章
C++实现16进制字符串转10进制
2023-07-08 05:35:51 深夜i     --     --
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进制的方法和代码实例。这个过程需要将字符串逐个字符处理,通过函数和循环结构完成转换。借助这个技术,我们可以方便地将计算机内部的数据转换为更易于处理的格式。

  
  

评论区

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