作者VictorTom (鬼翼&娃娃鱼)
看板C_and_CPP
标题Re: [问题] bitwise 如何取高低位元
时间Mon Oct 26 18:46:10 2009
※ 引述《pilipalabon (说好的性福呢?)》之铭言:
老实说小弟我实在不太懂您的问题, 直接回文好了....
: 假设今天我有一笔资料为
: ULong x = 0xe8a105f4
: UShort x1 = (UShort)x;
: UShort x2 = (x>>16);
: x1 == 0x5f4; //low
: x2 == ffffe8a1; //high
以这个case来说, x = 0xE8A105F4
那低位元16 bits x1 = 0x05F4
高位元16 bits x2 = 0xE8A1
如果你的ULong与UShort有正确的typedef成unsigned的型态....
应该不至於出现x2 = 0xFFFFE8A1这个结果出来才对....
而且这个结果的bit count就不对了吧@_@"
: 我在使用 UShort x2 = (x>>16) & 0x0000FFFF;
: 依然不行..
: 但我用
: printf("%x\n", x2 & 0x0000FFFF);
: 这样x2 == e8a1
小弟刚拿DevC++试了一下上面两个都OK的啊....@_@"
: 请问要如何才能取到高位址呢? 谢谢
您要不要check一下ULong与UShort的define??
再不然有其他相关的code吗@_@"
==
PS. 在不同大小'印弟安'的情况下结果可能就有差了....
但是, 最多是对应16 bits内资料顺序不同....
再怎麽样也不会有个FFFF在前面才对啊@_@"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.41.4
※ 编辑: VictorTom 来自: 220.134.41.4 (10/26 18:47)
1F:→ VictorTom:endian~~小弟我老是不记得怎麽拼....XD 10/26 18:49