2016-04-25 29 views
-1

我可以依赖任何按位操作的排列来始终生成唯一的结果吗?按位操作一直是我的薄弱环节。对2个数字进行按位操作以始终生成唯一结果?

我的目标是OR 2个数字总是产生一个唯一的值。其中一个数字将始终保持不变(等于0x0111)。即,

int uniqueDelegateId1 = WM_COMMAND | btn1.id; // resolves to 0x0111 | 50008 
int uniqueDelegateId2 = WM_COMMAND | btn2.id; // resolves to 0x0111 | 50009 

上面的例子不产生独特的效果,既生产50009。我可以使用不同的按位运算符来确保我总是得到唯一的结果吗?如xor,等等?

回答

0

我不清楚为什么你不能只使用id价值。

如果需要多个消息/ ID的组合之间进行区分,则可以移值中的一个出来的其它的范围的或运算它们在一起之前,沿着

WM_COMMAND | (btn1.id << MAX_COMMAND_BIT_WIDTH)

线