你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8S 四个八位数据组合成一个32位数据

[复制链接]
wdc5201314 提问时间:2016-3-21 17:32 /
如果直接将8位数据左移24位或者16位都会警告,程序下载进去后的到的数据有错
  1. u8 t1 = 0, t2 = 0, t3 = 0, t4 = 0;
  2. u32 temp = 0;
  3. temp = (t1<<24)|(t2 << 16)|(t3<<8)|t4;
复制代码
现在想到的方法是返回数组,又没有其他的方法产生一个32位的数据呢?
收藏 评论7 发布时间:2016-3-21 17:32

举报

7个回答
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
楼主为什么不用联合体呢???
QQ截图20160322130342.png
adlu 回答时间:2016-3-23 08:50:52

对!
应该是temp |= t2,temp |= t3,temp |= t4.
hwadong 回答时间:2016-3-28 18:54:39
联合体啊
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版