- 论坛徽章:
- 0
|
本帖最后由 aderho 于 2010-11-30 16:38 编辑
有一篇處理的方式
http://www.linuxforum.net/forum/ ... d&Number=535938
或
http://topic.csdn.net/u/20090302 ... a-4d17d7754dd5.html
整理可以的方式!
1.改用结构指针
2.變數或结构內容全部以4的倍數(long,float)
3.如同9樓的建議,自己寫個轉換函數(針對非4的倍數的變數)
...有賴大家再提供建議啦!
以下是採用结构指针- #include <stdio.h>
- #include <stdlib.h>
- struct SS2
- { char On;
- float FV;
- }__attribute__ ((packed)) FS[10];
- void modify(struct SS2 *sp)
- { static float fv=1.5;
- sp->FV = fv; fv++;
- }
- int main(void)
- { short i; char *cp,m0,m1,m2,m3,m4;
- for(i=0;i<10;i++)
- { modify((struct SS2 *)&FS[i]); FS[i].On=i; cp=(char *)&FS[i]; m0=*cp; cp++; m1=*cp; cp++; m2=*cp; cp++; m3=*cp; cp++; m4=*cp;
- printf("%02d->%05.2f : %02x, %02x,%02x,%02x,%02x\n",i,FS[i].FV,(unsigned char)m0,(unsigned char)m1,(unsigned char)m2,(unsigned char)m3,(unsigned char)m4);
- }
- return 0;
- }
复制代码 |
|