#include<stdio.h>#include<string.h>#PRagma pack(4)int main(){ unsigned char puc[4]; struct tagPIM //位斷大小占2個(gè)字節(jié) { unsigned char ucPiml; //1 unsigned char ucData0 : 1; //1 unsigned char ucData1 : 2; // unsigned char ucData2 : 3; // }*pstPimData; pstPimData = (struct tagPIM*)puc; memset(puc, 0, 4); pstPimData->ucPiml = 2; //0000 0010 因?yàn)閡cPiml占一個(gè)字節(jié),所以puc[0]里面存的就是00000010,因此puc[0]=0x00; pstPimData->ucData0 = 3; //0000 0011 因?yàn)閡nData0只占一個(gè)字節(jié),所以截取3的二進(jìn)制序列低位的1個(gè)字節(jié)即1,存入到puc[1]的低位第一個(gè)字節(jié) pstPimData->ucData1 = 4; //0000 0100 因?yàn)閡nData1占2個(gè)字節(jié),所以截取4的二進(jìn)制序列低位的2個(gè)字節(jié)即00,存入到puc[1]的從低位起第2、3字節(jié) pstPimData->ucData2 = 5; //0000 0101 因?yàn)閡nData2占3個(gè)字節(jié),所以截取5的二進(jìn)制序列低位的3個(gè)字節(jié)即101,存入到puc[1]的從低位起第4、5、6字節(jié) //最終puc[1]內(nèi)的數(shù)字的二進(jìn)制序列為:00101001 即0x29 printf("%02x %02x %02x %02x/n", puc[0], puc[1], puc[2], puc[3]); //因?yàn)槲粩嘀徽純蓚€(gè)字節(jié),所以數(shù)組的puc[3]和puc[4]為空; system("pause"); return 0;}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注