C语言两个byte 赋给一个变量的问题

ding_di 2017-07-22 05:12:08
我现在有两个byte1 0x3F byte 2 0xF0
有一定义好的变量 int data;

符合把两个byte1 byte2 赋给data

data 在这里是两个字节吧

我尝试过data=byte1<<16+byte2 -------失败
或者data=byte1<<4+byte2 -------失败
或者data=byte1<<8+byte2 -------失败

我最终希望的结果是 data= 0x3FF0

请大家赐教。谢谢
...全文
626 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
TopsLuo 2017-07-27
  • 打赏
  • 举报
回复
位移➕与运算,楼主用的是位移和➕运算,算法本身就错误,结果自然不正确
赵4老师 2017-07-26
  • 打赏
  • 举报
回复
5楼正解!
Vincent-123 2017-07-25
  • 打赏
  • 举报
回复
int byte1 = 0x3f; int byte2 = 0xf0; int data = byte2 + (byte1 << 8); cout << data << endl;
赵4老师 2017-07-24
  • 打赏
  • 举报
回复
unsigned char b1=0x3Fu;
unsigned char b2=0xF0u;
unsigned short int data;
data=((unsigned short int)b1<<8)|((unsigned short int)b2;
自信男孩 2017-07-23
  • 打赏
  • 举报
回复
data = ((unsigned int)byte1 << 8) + byte2;
另外注意下byte1和byte2的类型
LubinLew 2017-07-23
  • 打赏
  • 举报
回复
算加法也可以,不过 需要注意 << 运算符的优先级 低于 +

 data = (byte1 << 8) + byte2;
战在春秋 2017-07-22
  • 打赏
  • 举报
回复
引用
希望的结果是 data= 0x3FF0
不应该用+,应该用位或运算符
data = (byte1 << 8) | byte2;
lin5161678 2017-07-22
  • 打赏
  • 举报
回复
查阅优先级表格 下一题

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧