我正在處理一個返回字節數組的串行設備。 在這個數組中是存儲在無符號短褲和無符號字符中的值。 我有以下結構:將QByteArray中的數據放入Struct中
typedef struct {
unsigned short RPM; //0
unsigned short Intakepress; //1
unsigned short PressureV; //2
unsigned short ThrottleV; //3
unsigned short Primaryinp; //4
unsigned short Fuelc; //5
unsigned char Leadingign; //6
unsigned char Trailingign; //7
unsigned char Fueltemp; //8
unsigned char Moilp; //9
unsigned char Boosttp; //10
unsigned char Boostwg; //11
unsigned char Watertemp; //12
unsigned char Intaketemp; //13
unsigned char Knock; //14
unsigned char BatteryV; //15
unsigned short Speed; //16
unsigned short Iscvduty; //17
unsigned char O2volt; //18
unsigned char na1; //19
unsigned short Secinjpulse; //20
unsigned char na2; //21
} fc_adv_info_t;
什麼對數組這種結構映射的最佳方式?從串行設備接收到的陣列中的順序與結構匹配。
假設從線路接收到的字節的字節數也與主機字節匹配:只要使用好的「memcpy」,如果你需要結構體以保證你的'QByteArray'的生命週期。 'reinterpret_cast'否則(它會讓你省去副本,但會將結構的生命週期與QByteArray本身綁定在一起)。閱讀:讓你更容易拍攝自己的腳)。如果endianess不匹配,則需要通過'qFromLittleEndian'或'qFromBigEndian'手動轉換每個字段(具體取決於內存中的格式)。 – peppe