C语言 将十六进制的字符串 转换为十六进制的 数组
时间: 2024-05-05 14:21:36 浏览: 123
可以使用C语言的标准库函数`sscanf()`和`strlen()`来实现将十六进制的字符串转换为十六进制的数组。具体的实现代码如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 256
int main() {
char hex_string[MAX_LEN];
unsigned char hex_array[MAX_LEN / 2];
int i, len;
printf("请输入十六进制字符串:");
scanf("%s", hex_string);
len = strlen(hex_string);
if (len % 2 != 0) { // 检查字符串长度是否为偶数
printf("错误:输入的字符串长度必须为偶数!\n");
return 1;
}
for (i = 0; i < len; i += 2) {
sscanf(hex_string + i, "%2hhx", &hex_array[i / 2]);
}
printf("转换后的十六进制数组为:\n");
for (i = 0; i < len / 2; i++) {
printf("%02X ", hex_array[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,首先通过`scanf()`函数从控制台读取输入的十六进制字符串,然后通过`strlen()`函数获取字符串的长度。接着检查字符串长度是否为偶数,因为每两个字符代表一个十六进制数,所以字符串长度必须为偶数。如果字符串长度不是偶数,则输出错误信息并退出程序。
接下来使用`sscanf()`函数将字符串中的每两个字符转换为一个十六进制数,并存储到数组中。最后使用循环遍历数组,输出转换后的十六进制数组。
注意,在使用`sscanf()`函数转换字符串时需要使用`hh`长度修饰符来指定转换结果的类型为`unsigned char`,否则在某些平台上可能会出现类型转换错误。
阅读全文