C++程序 十六进制转十进制

C++程序 十六进制转十进制

给定一个十六进制数作为输入,我们需要编写一个程序,将给定的十六进制数转换为等效的十进制数。

实例:

输入: 67
输出: 103

输入: 512
输出: 1298

输入: 123
输出: 291

我们知道十六进制数使用16个符号 {0, 1, 2, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} 表示所有数字。 这里,(A, B, C, D, E, F) 表示 (10, 11, 12, 13, 14, 15)。

思路是从给定的十六进制数右侧开始提取数字,并保持一个名为 dec_value 的变量。在从十六进制数中提取数字时,将数字乘以适当的基数(16 的幂),并将其加到变量 dec_value 中。最后,变量 dec_value 将存储所需的十进制数。

例如: 如果十六进制数是 1A。

dec_value = 1*(16^1) + 10*(16^0) = 26

下图说明了如何将十六进制数 (1AB) 转换为等效的十进制值:

C++程序 十六进制转十进制

以下是上述思路的实现。

// C++ program to convert hexadecimal 
// to decimal
#include <bits/stdc++.h>
using namespace std;
  
// 将十六进制转为十进制的函数
int hexadecimalToDecimal(string hexVal)
{
    int len = hexVal.size();
  
    // 初始化基数为 1,即 16^0
    int base = 1;
  
    int dec_val = 0;
  
    // 从最后一个字符开始将字符提取为数字
    for (int i = len - 1; i >= 0; i--) 
    {
        // 如果字符在 '0' ~ '9' 范围内,则通过减去 48 的 ASCII 值将其转换为数字
        if (hexVal[i] >= '0' && hexVal[i] <= '9') 
        {
            dec_val += (int(hexVal[i]) - 48) * base;
  
            // 基数乘以 16 的幂
            base = base * 16;
        }
  
        // 如果字符在 'A'-'F' 范围内,则通过减去 55 的 ASCII 值将其转换为数字
        else if (hexVal[i] >= 'A' && hexVal[i] <= 'F') 
        {
            dec_val += (int(hexVal[i]) - 55) * base;
  
            // 基数乘以 16 的幂
            base = base * 16;
        }
    }
    return dec_val;
}
  
// 主程序
int main()
{
    string hexNum = "1A";
    cout << (hexadecimalToDecimal(hexNum));  
  
    return 0;
}  

输出:

26

使用预定义函数

// C++ program to convert octal 
// to decimal
#include <bits/stdc++.h>
using namespace std;
int HexToDec(string n) { return stoi(n, 0, 16); }
  
// 主程序
int main()
{
    string n = "1A";
    cout << HexToDec(n);
    return 0;
}  

输出:

26

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例