如何在C语言中将十六进制转换为字节数组

如何在C语言中将十六进制转换为字节数组,c,bytearray,hex,C,Bytearray,Hex,C语言中是否有任何库可以将十六进制转换为C语言中的字节数组 例如 Input const char *ptr="ff:ff:fe:ff" 有一个:deliminator值您可能可以用来读取中的值 #include <stdio.h> int main() { const char *input = "ff:ff:fe:ff"; unsigned int array[4]; int ret; ret = sscanf(input, "%02x:%0

C语言中是否有任何库可以将十六进制转换为C语言中的字节数组

例如

Input const char *ptr="ff:ff:fe:ff"
有一个:deliminator值

您可能可以用来读取中的值

#include <stdio.h>

int main() {
    const char *input = "ff:ff:fe:ff";
    unsigned int array[4];
    int ret;

    ret = sscanf(input, "%02x:%02x:%02x:%02x",
        &array[0], &array[1], &array[2], &array[3]);

    if (ret != 4) {
        printf("Match failed.\n");
        return -1;
    }

    printf("array = { %02x, %02x, %02x, %02x }\n",
        array[0], array[1], array[2], array[3]);

    return 0;
}
您可能可以使用来读取中的值

#include <stdio.h>

int main() {
    const char *input = "ff:ff:fe:ff";
    unsigned int array[4];
    int ret;

    ret = sscanf(input, "%02x:%02x:%02x:%02x",
        &array[0], &array[1], &array[2], &array[3]);

    if (ret != 4) {
        printf("Match failed.\n");
        return -1;
    }

    printf("array = { %02x, %02x, %02x, %02x }\n",
        array[0], array[1], array[2], array[3]);

    return 0;
}
您可以使用函数对单个字节进行转换。该函数将一个基参数作为其第三个参数,并报告输入中的新位置,让您决定是跳过分隔符还是读取更多数据,还是完成循环:

char *ptr="ff:ff:fe:ff";
for (;;) {
    int res = strtol(ptr, &ptr, 16);
    printf("%x\n", res);
    if (*ptr == ':') {
        ptr++;
    } else {
        break;
    }
}
.

您可以使用函数对单个字节进行转换。该函数将一个基参数作为其第三个参数,并报告输入中的新位置,让您决定是跳过分隔符还是读取更多数据,还是完成循环:

char *ptr="ff:ff:fe:ff";
for (;;) {
    int res = strtol(ptr, &ptr, 16);
    printf("%x\n", res);
    if (*ptr == ':') {
        ptr++;
    } else {
        break;
    }
}