如何将枚举类型数据保存到文件?

时间:2012-12-08 02:41:15

标签: c++ qt enums

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

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)将其保存到二进制文件中, 但我不知道数据的长度,以及数据的'字节'值的“分布”,
(如果数据为1,其他字节的值是否为零?)
我认为它不仅限于qt,如何将数据写入文件?

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

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

1 个答案:

答案 0 :(得分:0)

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