c语言10进制转化为16
时间: 2024-09-11 20:01:14 浏览: 50
在C语言中,将10进制数转换为16进制通常使用标准库函数`itoa()`或者自定义函数结合除法和取余运算来实现。这里我将以自定义函数为例来说明:
```c
#include <stdio.h>
#include <stdlib.h>
// 自定义函数将10进制转16进制字符数组
char* decimal_to_hexadecimal(int num) {
if (num == 0) return "0";
char hex_chars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char result[10]; // 预留足够的空间存储最多3位16进制数字和一位前导'0x'
int index = 0;
while (num > 0) {
result[index++] = hex_chars[num % 16];
num /= 16;
}
// 如果结果第一位是'0',则添加'0x'前缀
if (index == 1 && result[0] != 'A') {
result[0] = '0';
}
result[index] = '\0'; // 结束符
// 逆序字符串以便得到正确的顺序(高位在前)
for (int i = 0; i < index / 2; i++) {
char temp = result[i];
result[i] = result[index - i - 1];
result[index - i - 1] = temp;
}
return result;
}
int main() {
int decimal_num = 42;
printf("Decimal %d in hexadecimal is: %s\n", decimal_num, decimal_to_hexadecimal(decimal_num));
return 0;
}
```
运行此程序会输出 `Decimal 42 in hexadecimal is: 0x2A`。
阅读全文