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

来源:这里教程网 时间:2026-02-16 16:08:37 作者:

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

给定一个十进制数作为输入,我们需要编写一个程序将给定的十进制数转换为等价的十六进制数。即将基值为10的数字转换为基值为16的数字。

十六进制数使用16个值表示一个数字。数字从 0-9 用0-9的数字表示,而数字 10-15 则由A-F的字符表示。

实例:

输入:116
输出:74

输入:10
输出:A

输入:33
输出:21

算法:

    将数字除以16的余数存储在一个临时变量temp中。如果temp小于10,则在字符数组中插入(48 + temp); 否则,如果temp大于或等于10,则在字符数组中插入(55 + temp)。现在将数字除以16。重复以上两个步骤,直到数字不等于0。现在以相反的顺序打印数组。

示例

如果给定的十进制数是2545。

第1步 :计算当2545除以16的余数为1。因此,temp = 1。由于temp小于10,所以arr [0] = 48 + 1 = 49 =“1”。

第2步 :将2545除以16。新数字为2545/16 = 159。

第3步 :当159除以16的余数为15时,计算temp = 15。因此,由于temp大于10,所以arr [1] = 55 + 15 = 70 =“F”。

第4步 :将159除以16。新数字为159/16 = 9。

第5步 :计算将9除以16的余数为9。因此,由于temp小于10,所以arr [2] = 48 + 9 = 57 =“9”。

第6步 :将9除以16。新数字为9/16 = 0。

第7步 :因为数字变为0。停止重复步骤并以相反的顺序打印数组。因此,相应的十六进制数为9F1。

下图显示了将十进制数2545转换为等效十六进制数的示例。

以下是上述想法的实现

// C++ program to convert a decimal// number to hexadecimal number#include <iostream>using namespace std;  // Function to convert decimal // to hexadecimalvoid decToHexa(int n){    // char array to store hexadecimal number    char hexaDeciNum[100];      // Counter for hexadecimal number array    int i = 0;    while (n != 0)     {        // Temporary variable to store remainder        int temp = 0;          // Storing remainder in temp variable.        temp = n % 16;          // Check if temp < 10        if (temp < 10)         {            hexaDeciNum[i] = temp + 48;            i++;        }        else         {            hexaDeciNum[i] = temp + 55;            i++;        }          n = n / 16;    }      // Printing hexadecimal number     // array in reverse order    for (int j = i - 1; j >= 0; j--)        cout << hexaDeciNum[j];}  // Driver codeint main(){    int n = 2545;    decToHexa(n);    return 0;}  

输出:

9F1

时间复杂度 :O(log 16 n)

辅助空间 :O(1)

使用预定义函数

// C++程序将十进制数字转换成十六进制数字#include <iostream>using namespace std;  // 将十进制数字转换成十六进制数字的函数void decToHexa(int n) {    cout << hex << n << endl; }  // 主程序int main(){    int n = 2545;    decToHexa(n);    return 0;}

输出:

9f1

相关推荐