這是一個用u8變量讀取u16數組的代碼,一種是u8數組的方式拆解u16數組,一種是直接賦值到u8變量的方法,直接賦值貌似不好用,多次賦值會出錯?
有沒有大神高手來指點一下?
typedef unsigned char u8;
typedef unsigned int u16;
u16 buf_16[4]={0x1234,0x5678,0x90ab,0xcdef};//16位雙字節數組
void main()
{
u8 buf_8[8]; //單字節數組
u8 *real_addr= buf_16; //定義一個指針,單字節型,指向雙字節數組首址
u8 i;
u8 tt,kk;
//test1:
for (i=0;i<8;i++) //拆數組16bit到8bit
{
buf_8[ i]=*(real_addr+i); //賦值[ i]
}
//到這里,buf_8[]={0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF};
//test2:
*real_addr= buf_16; //確定指針
while(1)
{
tt=*(real_addr+3); //單字節賦值 tt=0x78;
kk=*(real_addr+5);//kk=0xab;
//tt=*(real_addr+7); //不知為啥,加入這行就出錯,再次賦值不能?
}
}
|