为何类型强转后,结构体内的数据就变了

为什么类型强转后,结构体内的数据就变了比如,有个内存地址是0xfefefe。有数据结构:struct A{ULONG aBYTE b

为什么类型强转后,结构体内的数据就变了
比如,有个内存地址是0xfefefe。
有数据结构:struct A{
                      ULONG a;
                      BYTE b;
                      BYTE d;
                      ULONG e;
    };
A *a ;
a = (A*)0xfefefe
然后,发现b里面的内容跟内存里的实际内容不符合。已经做过字节取整的处理,字节长度正确。如果不是强转,而是直接从内存地址里取数据,也是正确的。
只有这种指针强转后,会发现数据是错的。
[解决办法]
一般也就下面两种情况:
1. 结构体在内存对齐问题?
2. 注意:大端,小端问题?