C++中需要将一串16进制的字符串存到uint8_t的数组中
如,有一串16进制字符串“ABDCF456789123”,运行完之后效果为
{0xAB,0xDC,0xF4,0x56,0x78,0x91,0x23}
{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;
}