c语言进制间怎么转换
时间: 2024-12-15 10:19:39 浏览: 7
在C语言中,进行不同进制之间的转换通常涉及到整型数据类型的转换。主要有两种基本的方式:
1. 十进制转其他进制:可以手动编写循环,通过位运算逐位相乘再取余数来实现。例如,将十进制转换成二进制、八进制或十六进制,可以分别用到`%2`、`%8`或`%16`。
```c
#include <stdio.h>
#include <string.h>
void decToBin(int decimal) {
int binary[32]; // 预计最多32位
int i = 0;
while (decimal > 0) {
binary[i] = decimal % 2;
decimal /= 2;
i++;
}
for (int j = i - 1; j >= 0; j--)
printf("%d", binary[j]);
}
// 类似的函数可以用于decToOct和decToHex
```
2. 其他进制转十进制:可以先按位相加然后除以目标进制,不断得到商和余数,直到余数为零。例如,十六进制转十进制:
```c
int hexToDec(char hex_digit) {
if (hex_digit >= '0' && hex_digit <= '9')
return hex_digit - '0';
else if (hex_digit >= 'A' && hex_digit <= 'F')
return hex_digit - 'A' + 10;
else if (hex_digit >= 'a' && hex_digit <= 'f')
return hex_digit - 'a' + 10;
else
return -1; // 错误字符处理
}
int hexToDecStr(const char* hex_str) {
int decimal = 0;
for (char digit : hex_str) {
decimal = decimal * 16 + hexToDec(digit);
// 更安全的做法是检查是否超出整数范围
}
return decimal;
}
```
阅读全文