编写一个函数,输入一个十进制数,输出对应的十六进制数。(不能用printf的%x格式说明符)
时间: 2024-02-18 21:05:46 浏览: 114
输入10进制,输出16进制
可以使用除留余数法,将十进制数不断除以16,得到的余数即为每一位的十六进制数,直到商为0为止。然后将得到的余数倒序排列,即为转换后的十六进制数。
下面是一个示例代码:
```C
void dec2hex(int dec, char* hex) {
int remainder;
int i = 0;
while (dec > 0) {
remainder = dec % 16;
if (remainder < 10) {
hex[i] = remainder + '0';
} else {
hex[i] = remainder - 10 + 'A';
}
dec /= 16;
i++;
}
hex[i] = '\0';
// reverse the result
int len = strlen(hex);
for (int j = 0; j < len / 2; j++) {
char temp = hex[j];
hex[j] = hex[len - j - 1];
hex[len - j - 1] = temp;
}
}
```
这个函数接受两个参数,一个是要转换的十进制数,另一个是存放转换结果的字符串数组。在函数内部使用余数计算并将结果存储到字符串数组中,最后将结果倒序排列。
阅读全文