Я должен разобрать массив символов в c ++, который имеет шестнадцатеричные значения:
char test[20] = ":CF0100020003000400";
Из теста мне нужно получить 0200 (512), 0300 (768) и 0400 (1024). Я хочу сохранить эти значения в типе uint16_t.
uint16_t value1;
uint16_t value2;
uint16_t value3;
sscanf(test, ":CF%*04x%04x%04x%04x", (int *)&value1, (int *)&value2, (int *)&value3);
Я получил только последнее значение (value3 = 1024), но value1 и value2 равны 0. Однако, если переменные имеют тип int, без приведения, sscanf работает нормально. I Как я могу это исправить?