如何记录位掩码

Posted

技术标签:

【中文标题】如何记录位掩码【英文标题】:How to log a bit mask 【发布时间】:2012-01-26 12:30:01 【问题描述】:

我正在调用[[UIApplication sharedApplication] enabledRemoteNotifications],它返回一个位掩码。我如何NSLog 位掩码来了解位掩码是如何组成的以及哪些通知是开/关的?

【问题讨论】:

嗯,可能是一个十六进制值。 十六进制不会有太大帮助。像“F4A0”这样的值如何告诉您检查哪些位比像 476 这样的十进制数更能做到这一点? (当然,该特定接口只返回零或一——而不是位掩码。) @NickLockwood -- 更容易区分各个位。 @NickLockwood - 非常好的答案!我知道问题是 NSLog - 获取二进制值的另一种快速方法是在感兴趣的整数上设置断点,在调试器变量视图中,选择变量并右键单击,选择“View Value As”并选择二进制跨度> 【参考方案1】:

您需要将其打印为二进制值,以便为每个位获得 1 或 0。这是一个回答如何记录二进制值的问题:

NSInteger to binary (string) value in 8bit format

【讨论】:

【参考方案2】:

如果您想以符号方式记录这些位,则需要一些编程:

NSLog(@"MASK_A = %s, MASK_B = %s, MASK_C =%s", mask & MASK_A ? "YES" : "NO", mask & MASK_B ? "YES" : "NO", mask & MASK_C ? "YES" : "NO");

或者:

NSLog(@"mask = ( %s%s%s)", mask & MASK_A ? "MASK_A " : "", mask & MASK_B ? "MASK_B " : "", mask & MASK_C ? "MASK_C " : "");

【讨论】:

以上是关于如何记录位掩码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中为 SpriteKit 定义类别位掩码枚举?

碰撞位掩码是如何工作的?斯威夫特/雪碧套件

PHP中基于位掩码获取数组值

如何使用位掩码在 Swift 2.2 中自定义 UIControlState?

位掩码是不是可以与位中的“访问数组”相媲美?

如何使用位掩码来允许/禁止某些位的操作