十六进制转二进制C语言
时间: 2024-11-03 15:23:21 浏览: 11
在C语言中,十六进制数转换为二进制数可以分两步进行:首先将十六进制字符串转换为整数,然后将整数转换为二进制字符串。下面是一个简单的函数示例,使用`strtol()`函数将十六进制字符串转换为十进制整数,再使用`itoa()`或者自定义函数将十进制整数转换为二进制字符串:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 自定义函数将十进制整数转换为二进制字符串
char* dec_to_bin(int num) {
static char binary[64]; // 足够容纳最多32位二进制数
int i = 0;
while (num > 0) {
binary[i++] = num % 2 + '0';
num /= 2;
}
binary[i] = '\0'; // 添加字符串结束符
// 如果数字不足32位,前面填充'0'
for (int j = 0; j < 32 - i; j++)
binary[j] = '0';
return binary;
}
void hex_to_bin(const char* hex_string) {
long decimal_num = strtol(hex_string, NULL, 16); // 转换十六进制到十进制
char* binary_str = dec_to_bin(decimal_num);
printf("十六进制 %s 转换成二进制为 %s\n", hex_string, binary_str);
free(binary_str); // 释放内存
}
int main() {
char hex[] = "1A"; // 示例十六进制字符串
hex_to_bin(hex);
return 0;
}
阅读全文