C++ 十进制与十六进制转换

文章作者:里海
来源网站:里海C\C++专栏


十进制与十六进制转换

#include <iostream>  
#include <string>  
using namespace std;

//十进制整数转十六进制字符串
string DecimalToHex(long long decimal)
{
    
    
    string hex = "";
    while (decimal > 0) 
    {
    
    
        int remainder = decimal % 16;
        if (remainder < 10) 
            hex = (char)(remainder + '0') + hex;
        else 
            hex = (char)(remainder + 'A' - 10) + hex;
        decimal /= 16;
    }
    return hex;
}

//十六进制字符串转十进制整数
long long HexToDecimal(string hex)
{
    
    
    long long decimal = 0;
    for (int i = 0; i < hex.size(); i++)
    {
    
    
        char c = hex[i];
        if (c >= '0' && c <= '9')
            decimal = decimal * 16 + (c - '0');
        else
            decimal = decimal * 16 + (c - 'A' + 10);
    }
    return decimal;
}

int main() 
{
    
    
    long long n = 3123197280;
    cout << n << endl;

    string hex = DecimalToHex(n);
    cout << hex << endl;

    n = HexToDecimal(hex);
    cout << n << endl;

    cin.get();
    return 0;
}

输出:
3123197280
BA283560
3123197280

在这里插入图片描述

进制转换

十进制和十六进制之间的转换在计算机科学和日常生活中都是非常重要的。十进制是我们日常生活中常用的计数系统,基于10个不同的数字(0-9)进行计数。而十六进制则是计算机内部使用的计数系统,基于16个不同的数字(0-9和A-F)进行计数。

要进行十进制到十六进制的转换,我们可以使用以下步骤:

  • 将十进制数拆分成小数点左右两部分。
  • 将小数部分转换为十六进制,每个十六进制数对应4位二进制数。例如,0.375的二进制表示为0.011,然后转换为十六进制就是0.3。
  • 将整数部分转换为十六进制,方法相同。例如,12的二进制表示为1100,转换为十六进制就是C。
  • 将小数和整数部分的结果合并,得到最终的十六进制表示。例如,将0.3和12合并,得到的十六进制表示为0.3C。

同样,从十六进制转换到十进制,我们可以使用以下步骤:

  • 将十六进制数拆分成小数点左右两部分。
  • 将小数部分转换为二进制,每个十六进制数对应4位二进制数。例如,0.3的二进制表示为0.0111,然后转换为十进制就是0.375。
  • 将整数部分转换为二进制,方法相同。例如,C的二进制表示为1100,然后转换为十进制就是12。
  • 将小数和整数部分的结果合并,得到最终的十进制表示。例如,将0.375和12合并,得到的十进制表示为12.375。
    在计算机科学中,十六进制的使用非常普遍,因为它可以有效地表示二进制数据,而二进制在计算机内部处理数据的方式非常自然地映射到十六进制的表示。

猜你喜欢

转载自blog.csdn.net/WangPaiFeiXingYuan/article/details/134500608