我在將消息解析爲結構時遇到了一些麻煩。我知道消息被分解成字節,並且消息總是會有11個字節長。有人告訴我,解析數據的一個非常優雅的解決方案就是將傳入緩衝區轉換爲字節結構。我的問題是如何執行該功能。我聽說通過將緩衝區轉換爲char *,您應該能夠在一行或兩行中執行轉換。將消息解析爲結構
typedef struct tStateMsg {
uint8_t reportID;
uint8_t ctrlName1;
uint8_t State1;
uint8_t ctrlName2;
uint8_t State2;
uint8_t ctrlName3;
uint8_t State3;
uint8_t ctrlName4;
uint8_t State4;
uint8_t ctrlName5;
uint8_t State5;
} StateMsg;
void SetState(uint8 msgBuffer[], uint8 bufferSize) //BufferSize is always 11
{
//Parse the message to the struct.
}
我知道有更多的錯誤檢查需要確保該消息始終是11個字節長,所有我所期望的數據是存在的,但我會忽略,只是暫時。
謝謝你的幫助!
如果在這裏有填充,但要注意編譯器允許在類成員之間添加填充,我會感到驚訝。這意味着'sizeof(tStateMsg)> = 11' – NathanOliver
C或C++?他們不是同一種語言。我很確定dbush的答案在C++中是非法的。標記其中一個。不是都。 – Asu
你會想看看[Eric Raymond關於結構包裝](http://www.catb.org/esr/structure-packing/)。 –