把一个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的数就不对,高位出错
展开
 我来答
dreambox007
2014-04-30 · TA获得超过417个赞
知道小有建树答主
回答量:295
采纳率:100%
帮助的人:280万
展开全部
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);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式