C语言字符串数据转换成数组数据

C语言:将char a[]={“22 33 44 55”}(全是16进制数)转变成char a[]={22,33,44,55}(给每个数据前面加上0X)

将char a[]={“22 33 44 55”}(全是16进制数)?你这发的是什么

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    我可以使用以下代码将一个字符串类型的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前缀的字符串,最终将结果存放到数组中。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^