王鹿其 发表于 2023-11-8 19:31:28

C++

用函数实现将一个以字符串形式表示的十六进制数转换为一个十进制整数。例如,输入”A2”转换为162。

isdkz 发表于 2023-11-8 19:32:46

您可以使用以下函数来将一个以字符串形式表示的十六进制数转换为一个十进制整数:

#include <iostream>
#include <string>

int hexToDec(const std::string& hex) {
    int dec = 0;
    int power = 1;

    // 从字符串的最后一个字符开始遍历
    for (int i = hex.length() - 1; i >= 0; i--) {
      char c = hex[ i];

      // 如果字符是数字,则将其转换为对应的十进制数值
      if (isdigit(c)) {
            dec += (c - '0') * power;
      }
      // 如果字符是字母,则将其转换为对应的十进制数值
      else {
            dec += (tolower(c) - 'a' + 10) * power;
      }

      power *= 16; // 更新权重
    }

    return dec;
}

int main() {
    std::string hex = "A2";
    int dec = hexToDec(hex);
    std::cout << "十六进制数 " << hex << " 转换为十进制数为 " << dec << std::endl;

    return 0;
}


这个函数使用了一个循环来遍历输入的十六进制字符串。对于每个字符,它首先检查它是否是一个数字。如果是数字,则将其转换为对应的十进制数值并加到结果中。如果字符是一个字母,则将其转换为对应的十进制数值并加到结果中。最后,将权重乘以16,以便处理下一个字符。最后,返回结果即可。

在上面的示例中,我们将字符串"A2"传递给 hexToDec 函数,并将返回的十进制数打印到控制台上。输出将是:

十六进制数 A2 转换为十进制数为 162
页: [1]
查看完整版本: C++