标题: C语言16位变量怎么赋值给8位变量? [打印本页]

作者: hzl3128    时间: 2018-12-11 03:24
标题: C语言16位变量怎么赋值给8位变量?
int16 data[3];
uint8  Data[3];

                data[0] = adc_once(ADC0_SE5b,ADC_8bit);//采集ADC0_SE8电压,精度8位        
                Data[0] = data[0]%255;    //在IAR编译上会显示“Data[0]”乱码
for(int i=0;i<3:i++)
{
                 uart_putstr(uart2,&Data[ i]);
}



//在IAR编译上会显示“Data[0]”乱码,有没有什么好办法可以将16位变量值赋值给8位的(我只用了8位的ADC采集)????
求助




作者: gh001    时间: 2018-12-11 07:23
通过 取高八位、低八位或取中间某个8为赋值给8位变量
作者: 1xiaosun    时间: 2018-12-11 07:39
Data[0] = data[0]%256;

话说Data data不怕搞错吗
作者: HC6800-ES-V2.0    时间: 2018-12-11 08:00
你的程序有一点点错:
Data[0] = data[0]%255;    //在IAR编译上会显示“Data[0]”乱码
应该是256吧,改了试试
作者: YJGG    时间: 2018-12-11 09:09
Data[0] =(char) data[0];
作者: wxyz    时间: 2018-12-11 09:16
16位的高八位除以256,低八位对256取余。
作者: yzwzfyz    时间: 2018-12-11 12:51
你要想好:你打算将16位中哪8位取出,哪8位丢弃。下面的事就好办了。
作者: 07700114    时间: 2018-12-11 13:44
直接赋值,编译后就是只把第八位赋值给8位寄存器了
作者: hzl3128    时间: 2018-12-11 17:02
C:\Users\hzl\Desktop\求助.jpg
如图所示的乱码,新手表示不知道怎么操作
作者: hzl3128    时间: 2018-12-11 17:05
yzwzfyz 发表于 2018-12-11 12:51
你要想好:你打算将16位中哪8位取出,哪8位丢弃。下面的事就好办了。

我只要低8位,该怎么弄呢
(并且得到的新变量要通过串口显示)
作者: hzl3128    时间: 2018-12-11 17:06
yzwzfyz 发表于 2018-12-11 12:51
你要想好:你打算将16位中哪8位取出,哪8位丢弃。下面的事就好办了。

我只要低8位,该怎么弄呢
(并且得到的新变量要通过串口显示)
作者: hzl3128    时间: 2018-12-11 17:06
HC6800-ES-V2.0 发表于 2018-12-11 08:00
你的程序有一点点错:
Data[0] = data[0]%255;    //在IAR编译上会显示“Data[0]”乱码
应该是256吧,改 ...

试过了,依然乱码
作者: Lugia    时间: 2018-12-11 17:54
你试试:
Data[0]=(uint8)(data[0]>>8)+(uint8)data[0]

作者: 1xiaosun    时间: 2018-12-12 07:03
楼主需要学习电脑知识,你把图片放在C盘,是想快递给我们吗

乱码是个什么码,HEX的256个都是有效码,不存在乱码
作者: yzwzfyz    时间: 2018-12-12 09:14
直接送,高位自动溢出。
作者: wushiye54    时间: 2018-12-13 19:49
  Data[0] = data[0]&0xFF;




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1