C语言字符串类型转为数字

C语言 如何将一个字符串形式16进制,转为16进制数字?具体如下

img

每两位字符转换为整数,再转换为16进制

    unsigned char str[9] = "55000000";
    unsigned char strResult[4];
    for(int i=0;i<4;i++)
    {
        if(str[i*2] >='A' && str[i*2] <='Z')
            strResult[i] = str[i*2] - 'A';
        else
            strResult[i] = str[i*2] - '0';
       if(str[i*2+1] >='A' && str[i*2+1] <='Z')
            strResult[i] = strResult[i] * 16 + str[i*2] - 'A';
        else
            strResult[i] = strResult[i] * 16 + str[i*2] - '0';    
    }

参考一下ChatGPT示例代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    unsigned char star[9] = {"55000000"};
    unsigned char strResult[4] = {0};
    int i;
    for (i = 0; i < 8; i+=2)
    {
        char str[3] = {0};
        str[0] = star[i];
        str[1] = star[i+1];
        strResult[i/2] = strtol(str, NULL, 16);
    }
    printf("The result is : \n");
    for (i = 0; i < 4; i++)
        printf("0x%02x ", strResult[i]);
    printf("\n");
    return 0;
}

输出结果:

0x55 0x00 0x00 0x00