两个BYTE类型组合成WORD类型的问题

fei550 2007-06-27 11:44:01
白痴问题,小女子C的基础比较差,望高手指点一二,谢谢了:)
举个例子说明吧
BYTE nRecData[5];其中nRecData[2]=0X2D,nRecData[3]=0X3C
word data;
本来想将nRecData[2]和nRecData[3]组合成一个word类型:0x2D3C,
赋值给word类型变量data,本人程序是这样写的:
data = ((WORD)*( nRecData + 2 ) );
可是单步运行结果:data = 0x002D .
怎么会这样呢?
正确的写法应该是怎样的呢
...全文
401 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoshanhe 2007-06-29
  • 打赏
  • 举报
回复
to ls

呵呵,疏忽了,你的是对的
guoshanhe 2007-06-27
  • 打赏
  • 举报
回复
data = *((WORD *)( nRecData + 2 ));
改成这样试试
freshui 2007-06-27
  • 打赏
  • 举报
回复
data = ((WORD)*( nRecData + 2 ) ); // 这样只能赋给一个值
==>
data = nRecData[2];
data = data <<8; // 移到高位去
data = data | nRecData[3];
星羽 2007-06-27
  • 打赏
  • 举报
回复
to ls

WORD data = *(WORD*)(nRecData + 2);

这个得到的是 0x3d2c 因为80x86cpu 是小头存储


要得到 0x2c3d 应该

WORD data = (nRecData[2] << 8) | nRecData[3];
ayw215 2007-06-27
  • 打赏
  • 举报
回复
不是说米有分的嘛
骗俺~~

69,369

社区成员

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

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