STM8S 四个八位数据组合成一个32位数据
如果直接将8位数据左移24位或者16位都会警告,程序下载进去后的到的数据有错u8 t1 = 0, t2 = 0, t3 = 0, t4 = 0;u32 temp = 0;
temp = (t1<<24)|(t2 << 16)|(t3<<8)|t4;现在想到的方法是返回数组,又没有其他的方法产生一个32位的数据呢?
t1,t2,t3,t4都是u8的,左移之后就溢出了。
因此temp的值等于t4的值。 本帖最后由 adlu 于 2016-3-21 18:04 编辑
LZ可以分步进行。
temp = t1;
temp <<= 8;
temp = t2;
temp <<= 8;
temp = t3;
temp <<= 8;
temp = t4;
这样,左移的是temp,就不会溢出了。 03.temp = ((u32)t1<<24)|((u32)t2 << 16)|((u32)t3<<8)|t4; adlu 发表于 2016-3-21 18:03
LZ可以分步进行。
temp = t1;
temp
temp |= t2? 楼主为什么不用联合体呢??? 潇潇雨歇pku 发表于 2016-3-22 08:39
temp |= t2?
对!
应该是temp |= t2,temp |= t3,temp |= t4. 联合体啊
页:
[1]