我有一个8位移位值的枚举。我希望能够确定任何两个值之间的距离。如果值只是增加整数,这将很简单。这是我现在所拥有的。
typedef NS_ENUM(NSInteger, TestEnum) {
TestEnumValue1 = 1 << 0,
...
TestEnumValue8 = 1 << 7
};
TestEnum left = TestEnumValue8;
TestEnum right = TestEnumValue3;
TestEnum high = MAX(left, right);
TestEnum low = MIN(left, right);
int distance = 0;
int maximumEnum = 8;
int cumulativeResult = high;
for (int i = 0; i < maximumEnum; i++)
{
cumulativeResult = cumulativeResult / 2;
if (cumulativeResult == low)
{
distance = i;
break;
}
}
NSLog (@"Distance is %d", distance);
上面的方法似乎很有效,但这是最好的方法吗?
最佳答案
忽略使用枚举是否合适,请尝试以下操作:
TestEnum left = TestEnumValue8;
TestEnum right = TestEnumValue3;
TestEnum high = MAX(left, right);
TestEnum low = MIN(left, right);
int distance = 0;
while (low < high) {
low <<= 1;
distance++;
}
NSLog (@"Distance is %d", distance);
请记住,只有当
left
和right
都设置了一个“标志”时,这才有效。关于ios - 有没有更好的方法来确定两个枚举值之间的距离?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23483628/