C语言:将char a[]={“22 33 44 55”}(全是16进制数)转变成char a[]={22,33,44,55}(给每个数据前面加上0X)
将char a[]={“22 33 44 55”}(全是16进制数)?你这发的是什么
不知道你这个问题是否已经解决, 如果还没有解决的话:我可以使用以下代码将一个字符串类型的16进制数数据转换成数组型数据,并在转换时给每个数据添加0X前缀:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char hex_str[] = "22 33 44 55"; // 16进制数字符串
char* hex_ptr = hex_str; // 指向16进制数字符串的指针
int hex_arr[4] = {}; // 初始化一个数组用来存放转换后的数据
char fmt_str[] = "0X%hhX"; // 格式化字符串
char ptr_str[7] = {}; // 用于存放格式化后的字符串
int i;
for (i = 0; i < 4; i++) {
// 读取16进制数字符串中的数据
sscanf(hex_ptr, "%hhX", &(hex_arr[i]));
// 将数据转换成带0X前缀的字符串
sprintf(ptr_str, fmt_str, hex_arr[i]);
// 打印转换后的字符串,用于检验
printf("%s ", ptr_str);
// 移动指针到下一个数
hex_ptr += 3;
}
printf("\n");
return 0;
}
这里的思路是通过sscanf
函数读取字符串中的16进制数,再将转换后的数值用sprintf
函数转换成带0X前缀的字符串,最终将结果存放到数组中。