gpt4 book ai didi

ios - 如何测试位标记的所有字段是否存在于另一个位掩码中?

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:43 26 4
gpt4 key购买 nike

例如,如果您有 UIUserNotificationType 类型的位掩码,并且您可以像这样构造它们:

UIUserNotificationType a = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge;
UIUserNotificationType b = UIUserNotificationTypeAlert;
UIUserNotificationType c = UIUserNotificationTypeAlert | UIUserNotificationTypeSound;

如何将一个与另一个进行匹配以查看是否所有字段都包含在另一个中?

b 完全包含在 a 中,结果应为 TRUE。c 未完全包含在 a 中,结果应为 FALSE。

我知道如何测试某个特定领域的成员资格: bool 匹配 = (b & UIUserNotificationTypeAlert) != 0;

这不起作用:

BOOL included = (a & b); // a includes b? (= YES)
included = (a & c); // a includes c? (= YES)

要知道一个位掩码的所有字段是否包含在另一个位掩码中,我必须为每个可能的字段创建一个 if 并像这样对其进行测试:

if (b & UIUserNotificationTypeAlert && !(a & UIUserNotificationTypeAlert)) {
return NO;
}
if (b & UIUserNotificationTypeBadge && !(a & UIUserNotificationTypeBadge)) {
return NO;
}
if (b & UIUserNotificationTypeSound && !(a & UIUserNotificationTypeSound)) {
return NO;
}
return YES;

这感觉不对。应该有更简单的方法。

最佳答案

要测试掩码 b 是否完全包含在掩码 a 中,您可以尝试 bitwise and:

if((b & a) == b)

关于ios - 如何测试位标记的所有字段是否存在于另一个位掩码中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26235889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com