设计一个c语言函数让十六进制字符串转二进制int型数组
时间: 2024-12-24 08:37:05 浏览: 21
设计一个C语言函数将十六进制字符串转换成二进制整数数组,可以按照以下步骤:
```c
#include <stdio.h>
#include <string.h>
#include <stdint.h>
// 定义函数,输入为十六进制字符串和数组长度
uint8_t* hex_to_binary(const char *hex_str, size_t len) {
uint8_t *binary_array = (uint8_t*)malloc(len * sizeof(uint8_t)); // 为存储结果分配内存
if (!binary_array) {
printf("Memory allocation failed.\n");
return NULL;
}
for (size_t i = 0; i < len; i++) { // 遍历每个字符
const char digit = hex_str[i]; // 当前字符
int value; // 存放当前十六进制值
if (digit >= '0' && digit <= '9') { // 单位位数字
value = digit - '0';
} else if (digit >= 'a' && digit <= 'f') { // 小写字母
value = digit - 'a' + 10;
} else if (digit >= 'A' && digit <= 'F') { // 大写字母
value = digit - 'A' + 10;
} else {
printf("Invalid character at position %zu: '%c'\n", i, digit);
free(binary_array); // 清理已分配内存并返回NULL
return NULL;
}
binary_array[i] = value << (4 * (len - 1 - i)); // 将值左移,对应二进制位
}
return binary_array;
}
int main() {
char hex_str[] = "1aBcDe"; // 示例十六进制字符串
size_t len = strlen(hex_str) / 2; // 因为每两个字符代表一位十六进制数
uint8_t *binary_array = hex_to_binary(hex_str, len);
if (binary_array) {
// 现在binary_array存储了二进制表示的数值
// ... 这里你可以打印、处理或保存这个数组
printf("Hex string converted to binary array: \n");
for (size_t i = 0; i < len; i++) {
printf("%d ", binary_array[i]);
}
free(binary_array); // 在不再需要时释放内存
}
return 0;
}
阅读全文