21xrx.com
2025-03-20 18:33:21 Thursday
文章检索 我的文章 写文章
C++实现十六进制转十进制代码
2023-07-10 20:33:43 深夜i     --     --
C++ 十六进制 十进制 转换 代码

在计算机科学中,数字的表示方式有很多种,其中十六进制和十进制是比较常见的两种。十六进制是基于16个数字表示法的一种数制,而十进制则是基于10个数字表示法的数制。本文将介绍如何使用C++代码实现十六进制转十进制的转换。

步骤一:输入十六进制数

在进行十六进制转十进制的操作之前,首先需要输入要转换的十六进制数。在C++中可以使用如下代码实现:

string hexNumber;
cout << "请输入十六进制数:";
cin >> hexNumber;

上述代码中,定义了一个名为hexNumber的字符串变量,用于存储用户输入的十六进制数。通过标准输入流cin获取用户输入内容。

步骤二:转换十六进制数

将输入的十六进制数转换为十进制数的过程中,需要用到以下公式:

$十进制数=16^0\times D_0+16^1\times D_1+16^2\times D_2+...+16^n\times D_n$

其中,$D_i$表示第i位上的数字,$n$表示十六进制数的位数。

C++代码实现如下:

//将十六进制数字转换为十进制数字
int hexToDec(char hexDigit) {
  if (hexDigit >= '0' && hexDigit <= '9')
    return hexDigit - '0';
   else if (hexDigit >= 'A' && hexDigit <= 'F') {
    return hexDigit - 'A' + 10;
  } else if (hexDigit >= 'a' && hexDigit <= 'f') {
    return hexDigit - 'a' + 10;
  } else
    return -1; //不是合法的十六进制数字
  
}
//将十六进制数字符串转换为十进制数
int hexStrToDec(string hexStr) {
  int decNumber = 0;
  int len = hexStr.length();
  for (int i = 0; i < len; i++) {
    int hexDigit = hexToDec(hexStr[i]);
    if (hexDigit == -1)
      return -1; //不是合法的十六进制数字符串
    
    decNumber += hexDigit * pow(16, len - i - 1);
  }
  return decNumber;
}

上述代码中,定义了两个函数:hexToDec和hexStrToDec。hexToDec函数用于将一个十六进制数字字符转换为对应的十进制数字。如果输入的十六进制字符不合法,则返回-1。hexStrToDec函数则将输入的十六进制数字符串转换为对应的十进制数。

对于每一位上的数字,首先利用hexToDec函数将十六进制字符转换为十进制数字,然后根据公式将每一位上的十进制数字进行求和,最终得到十进制数。

步骤三:输出结果

最后,将得到的十进制数输出就可以了。C++代码实现如下:

int decNumber = hexStrToDec(hexNumber);
if (decNumber == -1)
  cout << "输入的十六进制数不合法!" << endl;
else
  cout << "转换为十进制数:" << decNumber << endl;

如果输入的十六进制数不合法,则输出相应的提示信息。否则将转换后的十进制数输出。

下面是完整的C++代码:

#include <iostream>
#include <string>
#include <cmath>
using namespace std;
//将十六进制数字转换为十进制数字
int hexToDec(char hexDigit) {
  if (hexDigit >= '0' && hexDigit <= '9')
    return hexDigit - '0';
   else if (hexDigit >= 'A' && hexDigit <= 'F') {
    return hexDigit - 'A' + 10;
  } else if (hexDigit >= 'a' && hexDigit <= 'f') {
    return hexDigit - 'a' + 10;
  } else
    return -1; //不是合法的十六进制数字
  
}
//将十六进制数字符串转换为十进制数
int hexStrToDec(string hexStr) {
  int decNumber = 0;
  int len = hexStr.length();
  for (int i = 0; i < len; i++) {
    int hexDigit = hexToDec(hexStr[i]);
    if (hexDigit == -1)
      return -1; //不是合法的十六进制数字符串
    
    decNumber += hexDigit * pow(16, len - i - 1);
  }
  return decNumber;
}
int main() {
  string hexNumber;
  cout << "请输入十六进制数:";
  cin >> hexNumber;
  int decNumber = hexStrToDec(hexNumber);
  if (decNumber == -1)
    cout << "输入的十六进制数不合法!" << endl;
   else
    cout << "转换为十进制数:" << decNumber << endl;
  
  return 0;
}

通过上述代码,我们可以将输入的十六进制数转换为对应的十进制数。这也为我们在实现一些计算机程序时提供了便利。

  
  

评论区