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
