这是一个用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); //不知为啥,加入这行就出错,再次赋值不能?
}
}
|