如何阻止结构体自动对齐,以及大小端处理?
我定义了一个结构体, 包含一个unsigned short和一个unsigned int, 我的理想是6个字节, 但是由于对齐成了8个字节.
问题是我要将一个字节流赋值进这个结构体, 字节流前两个字节是一个数值, 后4个字节是一个数值.
例如: 0x00, 0x01, 0x00, 0x00, 0x00, 0x01 理想是两个值1, 1
我的代码简化如下
#include<stdio.h>
#include<string.h>
typedef struct _STDATA
{
unsigned short us;
unsigned int ui;
} STDATA;
void func(void *buf)
{
STDATA st;
int len = sizeof(STDATA);
memcpy(&st, buf, len);
}
int main()
{
unsigned char s[10] = {0x00, 0x01, 0x00, 0x00, 0x00, 0x01,0x00, 0x00, 0x00, 0x00};
func((void *)s);
return 0;
}
#pragma pack ( push )
#pragma pack ( 1 )
struct XXXX
{
};
#pragma pack ( pop )