wdc5201314 发表于 2016-3-21 17:32:28

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位的数据呢?

adlu 发表于 2016-3-21 18:01:01

t1,t2,t3,t4都是u8的,左移之后就溢出了。
因此temp的值等于t4的值。

adlu 发表于 2016-3-21 18:03:04

本帖最后由 adlu 于 2016-3-21 18:04 编辑

LZ可以分步进行。
temp = t1;
temp <<= 8;
temp = t2;
temp <<= 8;
temp = t3;
temp <<= 8;
temp = t4;
这样,左移的是temp,就不会溢出了。

zcl201207 发表于 2016-3-21 21:38:41

03.temp = ((u32)t1<<24)|((u32)t2 << 16)|((u32)t3<<8)|t4;

潇潇雨歇pku 发表于 2016-3-22 08:39:42

adlu 发表于 2016-3-21 18:03
LZ可以分步进行。
temp = t1;
temp

temp |= t2?

zhuoyemp4 发表于 2016-3-22 13:04:24

楼主为什么不用联合体呢???

adlu 发表于 2016-3-23 08:50:52

潇潇雨歇pku 发表于 2016-3-22 08:39
temp |= t2?
对!
应该是temp |= t2,temp |= t3,temp |= t4.

hwadong 发表于 2016-3-28 18:54:39

联合体啊
页: [1]
查看完整版本: STM8S 四个八位数据组合成一个32位数据