
把一个16位的数组拆分成两个8位的数组,怎么搞?下面的程序哪里有问题?
数组can_shu16[36]和can_shu8[72]已经在头文件里定义好了:voidcan_shu_16turn8(void){u8i,j=0;u16tmp;for(...
数组can_shu16[36]和can_shu8[72]已经在头文件里定义好了:
void can_shu_16turn8(void)
{
u8 i,j=0;
u16 tmp;
for(i=0;i<36;i++)
{
tmp=can_shu16[i];
can_shu8[j++]=(unsigned char)(tmp&0xff00)>>8;
can_shu8[j++]=(unsigned char)(tmp&0x00ff);
}
}
现在的问题是:调用完这个程序好,小于或等于255的数没问题,大于255的数就不对,高位出错 展开
void can_shu_16turn8(void)
{
u8 i,j=0;
u16 tmp;
for(i=0;i<36;i++)
{
tmp=can_shu16[i];
can_shu8[j++]=(unsigned char)(tmp&0xff00)>>8;
can_shu8[j++]=(unsigned char)(tmp&0x00ff);
}
}
现在的问题是:调用完这个程序好,小于或等于255的数没问题,大于255的数就不对,高位出错 展开
1个回答
展开全部
can_shu8[j++]=(unsigned char)(tmp&0xff00)>>8;
改
can_shu8[j++]=(unsigned char)((tmp&0xff00)>>8);
追问
正触,原来是先后问题,谢谢!
如果我把这两个8位的数组重新合成为一个16位的数组,又怎样做呢?烦麻你帮我再解答一下,我帮你加分。
追答
u16 a;
u8 low,high;
a = (u16)(high & 0xFF)<< 8 + (low & 0xFF);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询