表示一个16字节变量

3

我需要在数据结构中表示一个16字节的字段:

struct Data_Entry
{
    uint8   CUI_Type;
    uint8   CUI_Size;
    uint16  Src_Refresh_Period;
    uint16  Src_Buffer_Size;
    uint16  Src_CUI_Offset;
    uint32  Src_BCW_Address;
    uint32  Src_Previous_Timestamp;
    /* The field below should be a 16 byte field */
    uint32      Data;

};

我该如何将“数据”字段表示为16字节字段,而不是当前的4字节字段?

谢谢。

鲍比

5个回答

11

uint8 Data[16];有什么问题吗?


8

使用数组:

struct Data_Entry
{
    uint8   CUI_Type;
    uint8   CUI_Size;
    uint16  Src_Refresh_Period;
    uint16  Src_Buffer_Size;
    uint16  Src_CUI_Offset;
    uint32  Src_BCW_Address;
    uint32  Src_Previous_Timestamp;
    /* The field below should be a 16 byte field */
    uint32  Data[4];

};

4

我很难相信您想要这个16字节的字段作为标量整数。

如果要使用int16B,你需要将其定义为类,并进行适当的存储(见下文),重载每一个算术运算符才能充分利用它。这种情况可能很少见,主要用于观察宇宙中的光电枚举器应用。

如果您想要同名的一组16字节,不会对其应用算术运算,请使用:

uint8 Data[16];

2

尝试以下之一:
uint8 Data[16];
或者
uint16 Data[8];
或者
uint32 Data[4];
或者
uint64 Data[2]; // 在某些平台上可能无法使用 uint64

或者您可以使用 std::vector 替代上述数组。


1

1
@Joshua:我非常确定它不会,但问题标记为C++,而不是C。 - andand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接