一个Dword算法问题,想了一天了(新手)

yuanhu9 2017-05-29 04:53:41
有一个DWORD 变量
DWORD ID = 0x105F64;(16进制)

然后我想把这个变量变成:
DWORD ID = 0x645F10;(16进制)

这个要怎么写啊?都快疯了,弄了一天了~
...全文
127 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanhu9 2017-05-29
  • 打赏
  • 举报
回复
感恩,学到了~ 5L的方法好高深。有点看不明白,不过能用~谢谢谢谢谢谢
战在春秋 2017-05-29
  • 打赏
  • 举报
回复
类似问题用位运算比较方便,代码如下:
DWORD ID = 0x105F64;
	DWORD newID = ((ID & 0x00ff00) | (ID & 0x0000ff) << 16 | (ID & 0xff0000) >> 16);
其中: ID & 0x00ff00 得到 005F00 (ID & 0x0000ff) << 16 得到 640000 (ID & 0xff0000) >> 16 得到 000010 最后得到 645F10 用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢。
「已注销」 2017-05-29
  • 打赏
  • 举报
回复
ID2.value就是您需要的值,当然移位也是可以的。
「已注销」 2017-05-29
  • 打赏
  • 举报
回复
只是24位吗?用移位或联合很容易就可以了,以联合为例: union Data { DWORD value; BYTE data[4]; }; int main() { union Data ID1; ID1.value = 0x105F64; union Data ID2; ID2.data[0] = ID1.data[2]; ID2.data[1] = ID1.data[1]; ID2.data[2] = ID1.data[0]; ID2.data[3] = 0; } 我假定您只需要24位,所以高位固定补0
yuanhu9 2017-05-29
  • 打赏
  • 举报
回复
呼叫各位大拿前来支援
yuanhu9 2017-05-29
  • 打赏
  • 举报
回复
呼叫各位大拿前来支援

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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