【发布时间】:2011-11-19 22:23:46
【问题描述】:
我有一个类似的输入
char *input="00112233FFAA";
uint8_t output[6];
用sscanf 将input 转换为output 的最简单方法是什么? (最好是没有循环的 1 行)我想到的解决方案不能扩展到 20+ 十六进制字符串。
sscanf(input, "%x%x%x%x%x",output[0], output[1]....output[5]);
【问题讨论】:
-
sscanf(input, "%2x%2x%2x%2x%2x%2x",&output[0], &output[1], ..., &output[5]);
-
请注意,使用
%x解析到uint8_t位置可能会导致内存损坏,因为它实际上需要unsigned int。 -
我称之为字节数组或八位字节字符串。