字符串转成十六进制,
char buf[3] = {"12"};
char byte;
sscanf(buf, "%02x", &byte);
这种实现是依赖于CPU大小端类型的。
对于小端机器,这个代码运行正常:
sscanf的过程 “12” -> | 12 | 00 | 00 | 00 | -> 取第一个字节0x12赋给byte , byte 等于18,没问题。
对于大端机器,这个代码将把byte置零:
sscanf的过程 “12” -> | 00 | 00 | 00 | 12 | -> 取第一个字节0x00赋给byte , byte 等于0,意外结果。