我正在爲微控制器(mbed LPC1768)製作一個程序,並且有幾個問題需要解碼uint8_t的串行輸入。十六進制字符數組2由2個字符到uint8_t
我得到一個充滿來自外部設備輸入的char ackBuffer[20];
。 我們得到的是,例如:F040A34B6785121\r
我想要做的是得到一個uint8_t數組,其中每個數字是由2個字符的十六進制值的符號。 F將顯示來自外部設備的消息已啓動,並且回車是每條消息的結尾。
所以我想uint8_t數組是:
0x04
0x0A
0x34
...
爲了使它更難它可以是ackBuffer是一個更小的尺寸,因此,例如僅F04004A\r
(如果這可以很容易固定的,那麼它的很漂亮,但我可以解決此問題我自己。
謝謝!
如何將字符串「04」轉換爲整數0x04? –
@OliCharlesworth這樣做的一箇舊方法是'scanf(「%2.2x」,&val)'。 –
ackBuffer [0] ='0'; ackBuffer [16] = 0;/*空終止* /然後按照http://stackoverflow.com/questions/1070497/c-convert-hex-string-to-signed-integer – IdeaHat