二进制转换为十六制c语言代码
时间: 2024-12-22 12:21:39 浏览: 6
在C语言中,将二进制数转换成十六进制可以使用内置函数`itoa()`或手动编写循环处理。以下是两个示例:
**使用内置函数 `itoa()` 示例:**
```c
#include <stdio.h>
#include <string.h>
void binary_to_hexadecimal(char binary[], char hex[]) {
int decimal = 0;
int base = 1;
// 将二进制字符串解析为十进制
for (int i = strlen(binary) - 1; i >= 0; i--) {
if (binary[i] == '1') {
decimal += base;
}
base <<= 1;
}
// 使用itoa()函数将十进制转为十六进制并存储到字符串中
char temp[100];
sprintf(temp, "%X", decimal);
strcpy(hex, temp);
}
int main() {
char binary[] = "10101010";
char hex[100];
binary_to_hexadecimal(binary, hex);
printf("Binary %s is hexadecimal: %s\n", binary, hex);
return 0;
}
```
**手动处理转换示例:**
```c
#include <stdio.h>
#include <stdlib.h>
char* binary_to_hexadecimal(const char* binary) {
static char hex[8]; // 十六进制最大为 FF,占用4位
int i = 0, j = 0;
int decimal = 0;
while (*binary != '\0') {
decimal = decimal * 2 + (*binary++ - '0');
if (decimal > 9) { // 当前位超过10,转换为十六进制
hex[j++] = 'A' + (decimal - 10); // A=10, B=11, ... F=15
} else {
hex[j++] = decimal + '0'; // 0-9直接对应
}
decimal = 0;
}
// 添加前导零如果需要
if (j < sizeof(hex) / sizeof(hex[0])) {
hex[j] = '\0';
} else {
hex[sizeof(hex) / sizeof(hex[0]) - 1] = '\0';
}
return hex;
}
int main() {
const char* binary = "10101010";
char* hex = binary_to_hexadecimal(binary);
printf("Binary %s is hexadecimal: %s\n", binary, hex);
return 0;
}
```
阅读全文