字符串轉成十六進制,
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,意外結果。