我是 C++ 和 Qt 的绝对初学者。
我正在使用 Qt 通过 TCP 广播不同的数据。发送和检索数据的过程工作正常,但我在解释接收方的数据时遇到问题。
数据以不同的结构表示,这些结构的共同点是它们具有一个commandId
和一个状态。其余的可能是错误消息、文件名或其他内容。此代码不是我自己编写的,也不允许我更改它(例如:定义和实现一个通用接口。)
typedef struct
{
uint8_t commandId;
State state;
//special data
QString errorMessage;
} Command1;
typedef struct
{
uint8_t commandId;
State state;
//special data
uint8_t amountSensors;
} Command2;
enum State {
STATID_PAUSE = 50000
STATID_RECORD = 50001
STATID_PLAY = 50002
STATID_ERROR = 50003
}
QByteArray
发件人正在以这种方式将结构转换为:
Command1 example;
example.commandId = 134;
example.state = STATID_ERROR;
char *p_Char;
p_char = reinterpret_cast<char*>(&example);
QByteArray qba(p_char, sizeof(p_char));
现在我必须编写一个接收器,但接收器不知道他得到了什么(Command1
或Command2
其他东西)。如果他能读出commandId
和状态,他将能够解释。
此时我可以像这样读出commandId:
commandId = static_cast<uint8_t>(qba[0]);
但是我怎么能读出State
which is anenum
呢?