【发布时间】:2023-03-30 11:15:01
【问题描述】:
我必须在 C++ 中解析一个具有十六进制值的 char 数组:
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 工作正常。 ¿ 我该如何解决?
【问题讨论】: