如何记录位掩码
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 定义类别位掩码枚举?