一个long类型的值怎么能直接赋给4个unsigned char数据成员的结构体

一个long类型的值如何能直接赋给4个unsigned char数据成员的结构体
一个long类型的值不能直接付给4个unsigned char数据成员的结构体
    typedef struct
    {
        char Data[4];
    }StructA;
    StructA A;
    long B;
    B=0x11121314;
    A=B;
因为long和结构体StructA数据类型不兼容,所以不能直接赋值
有没有好的方法直接赋值
不要告诉我,用分离的方法:
A.Data[0]=B>>24;
A.Data[1]=(B&0xFF0000)>>16;
A.Data[2]=(B&0xFF00)>>8;
A.Data[3]=B&0xFF;
我想请教更好方法,或者有更简洁的程序实现也可以看看
------解决方案--------------------
方法1
*(long*)A.Data = B;

方法2
   typedef struct
    {
     union {
         char Data[4];
         long dwData;
     };
    }StructA;
    StructA A;
    long B;
    B=0x11121314;
    A.dwData = B;
------解决方案--------------------
支持用联合来做

也可以用memcpy