我正在为微控制器(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