21xrx.com
2024-12-27 20:19:23 Friday
登录
文章检索 我的文章 写文章
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;

}

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

  
  

评论区

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