C语言代码十进制和二进制的转换
时间: 2024-09-28 18:06:05 浏览: 13
在C语言中,我们可以使用标准库函数来进行十进制数和二进制数之间的转换。以下是两种常见的转换方法:
1. **整型转换** (将十进制转换为二进制)
- 使用`bitset`或`itoa`函数(仅限于旧版本):`itoa()`函数已从C99开始被弃用,推荐使用更现代的方法。
```c
#include <stdio.h>
#include <stdlib.h> // 对于stdint.h
void dec_to_bin(int decimal) {
uint8_t binary[32]; // 大致足够存储32位的整数
int i = 0;
while(decimal > 0) {
binary[i++] = decimal % 2;
decimal /= 2;
}
// 输出反转的二进制字符串
for (i--; i >= 0; --i) {
printf("%d", binary[i]);
}
}
```
2. **字符串转换** (将二进制数转换为十进制)
- 直接使用`atoi`函数(只适用于以"0b"开头的二进制字符串),或者手动处理字符串。
```c
#include <string.h>
#include <errno.h>
int bin_to_dec(const char* binary_str) {
int decimal, len;
if (!binary_str || !binary_str || (binary_str != '0' && binary_str != '1')) {
errno = EINVAL;
return -1; // 非法输入
}
len = strlen(binary_str);
decimal = 0;
for (int i = 0; i < len; ++i) {
decimal = decimal * 2 + binary_str[len - 1 - i] - '0';
}
return decimal;
}
```