求教如何将下面的结构体转换成unsigned int型数组?
希望将
typedef struct
{
int XH;
char YHM[8];
unsinged logn HH;
char TQH[16];
int BXH;
long int BYCJ;
int BL;
long it DL;
char YDLB[12];
long int ZTDL;
long int DLZJ;
float WYJ;
float SYYC;
float HJJE;
}
转换成一个unsigned int型数组。
主要是想将这个结构体的值全部保存到flash器件中,而flash器件只支持写unsigned long.
[解决办法]
int n = sizeof(structName);
new pU = unsigned int[n];
[解决办法]
晕struct xxx stdata;
flash_write( addr, (unsigned int*)&stdata, sizeof(stdata) )
将结构体指针牵制类型转换成unsigned int类型指针就可以了
[解决办法]
unsigned long *pu = new unsigned long[sizeof(ss)]
memcpy(p,(void*)&s,sizeof(s));
这个结构体正好没有字节对齐的填充问题,所以直接sizeof、memcpy就可以了,不然强制转换是不行的
[解决办法]
struct xx s;
fwrite((unsigned long*)&s, sizeof(s), 1, file);
[解决办法]
int d[sizeof(user)/sizeof(unsigned int)+1];
没有memcpy自己写一个 其实你只要使用4字节写入就是了
如何写规则自己定义,计算一下所有大小和4字节是否整除
考虑补齐 读出的时候如何填充进struct就没问题了
就算将结构数据一个一个字节读出,以unsigned int转化写入,读出时候一个一个int转成char组合好再写入这个结构也没有问题
[解决办法]
其实你搞个联合体把这个结构体和unsigned int数组包在里边也不错~