【发布时间】:2012-12-08 02:41:15
【问题描述】:
我有枚举类型的数据,例如:
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();
【问题讨论】:
-
如果你改用c++11枚举类你会知道枚举数据的大小,因为你可以选择!
-
c 是内部数据所必需的。 :)
-
你能不能给个限制,因为我想把它保存为一个固定的单位。
-
sizeof(MessageType) == 4