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 hexadecimal
void 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 code
int 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