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

c++server side programmingprogramming更新于 2024/10/10 19:21:00

给定一个十六进制数作为输入,任务是将给定的十六进制数转换为十进制数。

计算机中的十六进制数以 16 为基数表示,十进制数以 10 为基数,用 0 - 9 表示,而十六进制数的数字从 0 开始 - 15 其中 10 表示为 A,11 表示为 B,12 表示为 C,13 表示为 D,14 表示为 E,15 表示为 F。

要将十六进制数转换为十进制数,请按照以下步骤 −

  • 我们将从右到左提取余数,然后将其与从 0 开始的幂相乘,并增加 1 直到 (位数) – 1
  • 由于我们需要将十六进制转换为二进制,因此幂的基数为 16,因为八进制的基数为 16。
  • 将给定输入的数字与基数和幂相乘并存储结果
  • 将所有相乘的值相加以获得最终结果,该结果为十进制数。

下面给出了将十六进制数转换为十进制数的图形表示。

示例

输入: ACD
   A(10) 将被转换为十进制数 -: 10 X 16^2 = 2560
   C(12) 将被转换为十进制数 -: 12 X 16^1 = 192
   D(13) 将被转换为十进制数 -: 13 X 16^0 = 13
输出-: total = 13 + 192 + 2560 = 2765

算法

开始
步骤 1-> 声明将十六进制转换为十进制的函数
   int convert(char num[])
     设置 int len = strlen(num)
      设置 int base = 1
      设置 int temp = 0
      循环 For int i=len-1 and i>=0 and i—
         IF (num[i]>='0' && num[i]<='9')
            设置 temp += (num[i] - 48)*base
           设置 base = base * 16
           结束
         Else If (num[i]>='A' && num[i]<='F')
            设置 temp += (num[i] - 55)*base
            设置 base = base*16
         结束
         返回 temp
步骤 2-> 在 main() 中
   声明 char num[] = "3F456A"
   调用 convert(num)
停止

示例

#include<iostream>
#include<string.h>
using namespace std;
//将十六进制转换为十进制
int convert(char num[]) {
   int len = strlen(num);
   int base = 1;
   int temp = 0;
   for (int i=len-1; i>=0; i--) {
      if (num[i]>='0' && num[i]<='9') {
         temp += (num[i] - 48)*base;
         base = base * 16;
      }
      else if (num[i]>='A' && num[i]<='F') {
         temp += (num[i] - 55)*base;
         base = base*16;
      }
   }
   return temp;
}
int main() {
   char num[] = "3F456A";
   cout<<num<<"转换为 deciaml 后变为:"<<convert(num)<<endl;
   return 0;
}

输出

如果我们运行上述代码,它将生成以下输出

3F456A 转换为 deciaml 后变为:4146538

相关文章