十进制数转为八进制和十六进制c语言
时间: 2024-11-17 08:28:33 浏览: 1
在C语言中,将十进制数转换为八进制或十六进制可以借助标准库函数`itoa()`、`octostr()`和`hex()`。以下是基本的步骤:
1. **八进制(Octal)**:
使用`itoa()`函数需要链接到`<stdlib.h>`头文件,并包含`stdio.h`。这个函数会将整数转换成字符串,然后你可以手动提取八进制部分。
```c
#include <stdio.h>
#include <stdlib.h>
void octal(int decimal) {
char oct_str[10]; // 存放结果的空间
itoa(decimal, oct_str, 8); // 第三个参数指定基数为8
printf("Decimal: %d -> Octal: %s\n", decimal, oct_str);
}
```
2. **十六进制(Hexadecimal)**:
C语言本身没有直接提供类似`itoa()`的函数来转换为十六进制,但可以借助自定义算法或者第三方库。一种常见的做法是先转换为二进制,再用`scanf()`读取并解析二进制位作为十六进制字符。
```c
#include <stdio.h>
void hexadecimal(int decimal) {
char hex_str[10];
int bin[4], i;
for (i = 0; decimal > 0; decimal /= 16, ++i) {
bin[i] = decimal % 16;
}
// 从低位到高位填充十六进制字符
for (i = 0; i < 4; ++i) {
if (bin[i] < 10) {
hex_str[i] = '0' + bin[i];
} else {
hex_str[i] = 'A' + bin[i] - 10; // A代表10, B代表11, ... F代表15
}
}
printf("Decimal: %d -> Hexadecimal: %s\n", decimal, hex_str);
}
int main() {
int num = 12345;
octal(num);
hexadecimal(num);
return 0;
}
```
阅读全文