C语言 2进制转16进制
时间: 2025-02-23 17:35:07 浏览: 36
在C语言中,将二进制数转换成十六进制可以分为两步:首先将二进制转换成整数,然后将这个整数转换成十六进制字符串。这里我们可以利用标准库函数`itoa()`或手动编写转换算法。
1. **使用`itoa()`函数**:
如果目标平台支持,你可以使用`itoa()`函数,它可以从整数生成对应的十进制字符串。先将二进制数乘以16的幂,直到二进制位全部消耗掉,然后将得到的结果连接成十六进制。例如:
```c
#include <stdio.h>
#include <stdlib.h>
void bin_to_hex(int binary) {
char hex[100];
sprintf(hex, "%X", binary);
printf("Hexadecimal: %s\n", hex);
}
int main() {
int binary = ...; // 二进制数值
bin_to_hex(binary);
return 0;
}
```
2. **手动转换**:
如果不希望依赖特定库,也可以通过循环遍历每一位,分别转换并拼接。例如:
```c
void binary_to_hex(char *binary, int len) {
char hex[8]; // 十六进制最大为FF (11111111), 4位
for (int i = 0; i < len; i++) {
int digit = binary[i] / 16; // 取二进制的高四位
hex[i] = '0' + digit; // '0' to '9'
if (digit > 9) {
hex[i] += 7; // 'A' to 'F'
}
}
hex[len] = '\0'; // 结尾添加空字符
printf("Hexadecimal: %s\n", hex);
}
int main() {
char binary[] = {1, 0, 1, 1, 0, 1, 1, 1}; // 二进制数值作为数组
binary_to_hex(binary, sizeof(binary)/sizeof(binary[0]));
return 0;
}
```
阅读全文
相关推荐

















