C语言进制转换函数(2进制、10进制、8进制、16进制相互转换)
时间: 2024-09-30 19:06:40 浏览: 36
C语言提供了一些内建函数以及自定义函数来实现基本的数字进制转换。以下是几种常见的转换方式:
1. **整数之间的转换**:
- `itoa` (integer to ASCII) 和 `atoi` (ASCII to integer) 可用于10进制字符串到整数的转换,但是它们并不直接支持其他进制,通常需要配合其他方法。
- 使用`std::bitset`库可以在C++中实现更复杂的二进制转换。
2. **位运算**:
- 对于简单的2进制转换,可以利用按位操作,例如按位与(&)、按位或(|)和左移(<<)右移(>>)等来实现。
3. **手动编写转换函数**:
- 自定义函数如`decimal_to_binary`, `decimal_to_octal`, `decimal_to_hexadecimal` 等,可以采用循环结构逐步完成转换。
- 例如,`decimal_to_binary`可以通过除2取余法得到每一位的二进制值,`decimal_to_octal`和`decimal_to_hexadecimal`类似但基数分别是8和16。
4. **字符串库函数**:
- `strtol` 和 `strtoul` 函数在处理输入字符串时可以指定基数来进行10进制到其他进制的转换。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 示例:将十进制整数转成二进制字符串
char* decimal_to_binary(int num) {
char binary[32];
int i = 0;
while (num > 0) {
binary[i++] = num % 2 + '0';
num /= 2;
}
binary[i] = '\0'; // 添加终止符
reverse(binary); // 如果需要,这里添加反转字符串的函数
return binary;
}
// 示例:手动实现其他进制转换
void print_octal(int num) {
// ...
}
void print_hexadecimal(int num) {
// ...
}
// 相关问题--
阅读全文