1

我有枚举类型的数据,例如:

typedef enum
{
    NULLTYPE = 0U,
    ParameterGetType = 1U,
    ParameterSetType = 2U,
    ParameterStatusType  = 3U,
    EventActionType  = 4U,
    CommandType  = 5U,
    CommandGetType  = 6U,
    CommandSetType  = 7U,
    EquipmentIDGetType   = 15U,
    EquipmentIDSetType   = 16U,
    EquipmentIDStatusType = 17U,
    EventReportGetType  = 18U,
    EventReportSetType  = 19U,
    EventReportStatusType = 20U,
    PeriodicReportType = 21U,
    PeriodicReportGetType  = 22U,
    PeriodicReportSetType  = 23U,
    PeriodicReportStatusType  = 24U,
    CommandResponseType  = 25U,
    CommandResponseGetType  = 26U,
    CommandResponseSetType  = 27U,
    CommandResponseStatusType  = 28U,
    CommandResponseDeletedType  = 29U

}MessageType;

我想使用 QByteArray 和 QFile::write(QByteArray) 将它保存到二进制文件中,
但我不知道数据的长度,以及数据的字节值的“分布”,<br>(如果数据为1,其他字节的值会为零吗?)
我认为不限于qt,如何将数据写入文件?

(对于短类型数据(MsgItem->PIN),我会这样做:)

QByteArray bytes;
bytes.append(((MsgItem->PIN)>>8) & 0xff);
bytes.append((MsgItem->PIN) & 0xff);
MsgFile->write(bytes);
MsgFile->flush();
4

1 回答 1

0

将枚举值转换为固定大小的整数(使用<cstdint>和 eg uint16_t)并执行您需要的任何字节排序操作。

于 2012-12-08T03:49:08.270 回答