编辑代码

#include <stdio.h>

#define BYTE1  __attribute__((packed, aligned(1)))  //aligned(1):1字节对齐

typedef struct
{
    char a;

    char b;

    char c;

    int d;
   
    int e;

    float f;
}BYTE1 Strcut_DTAT;

typedef union
{
    Strcut_DTAT data;
    unsigned char buff[sizeof(Strcut_DTAT)];
}Union_DATA;

int main () {
    Union_DATA  tlv_data[3];

    tlv_data[0].data.a = 1;
    tlv_data[0].data.b = 2;
    tlv_data[0].data.c = 9;
    tlv_data[0].data.d = 4;
    tlv_data[0].data.e = 8;
    tlv_data[0].data.f = 6;

    printf("Strcut_DTAT len:%d\r\n",sizeof(Strcut_DTAT));

    printf("buff:\r\n");
    for(char i = 0; i < sizeof(Strcut_DTAT); i++)
    {
        printf("%d ",tlv_data[0].buff[i]);
    }
    printf("\r\n");

    printf("union len:%d\r\n",sizeof(tlv_data));
    return 0;
}