C++16进制字符串存到整型数组中

C++中需要将一串16进制的字符串存到uint8_t的数组中

如,有一串16进制字符串“ABDCF456789123”,运行完之后效果为

{0xAB,0xDC,0xF4,0x56,0x78,0x91,0x23}

字符串长度len,数组长度len/2,没两个字符转成10进制赋值给数组。

int main()
{
    char s[] = "ABDCF456789123";
    int len = strlen(s);
    int sum = 0, t, cnt = 0;
    int *a = new int[len / 2]{0};
    for (size_t i = 0; s[i]; i++)
    {
        if (s[i] > '9')
            t = s[i] - 'A' + 10;
        else
            t = s[i] - '0';

        a[cnt] = a[cnt] * 16 + t;
        if (i % 2 == 1)
            cnt++;
    }
    for (size_t i = 0; i < cnt; i++)
    {
        printf("0x%X ", a[i]);
    }

    return 0;
}