获取适当的值比方说,我一定要在与值表(第一行是描述)从十六进制
说明 - >十进制值 - >位数
选项1 - > 1 - > 1
选项2 - > 2 - > 2
选项3 - > 4 - > 3
选项4 - > 8 - > 4
OptionX -> 137438953472 -> 38
现在我有以下值:0x7000000800000000。我怎样才能认识到,根据这个数字选择了哪些选项?
获取适当的值比方说,我一定要在与值表(第一行是描述)从十六进制
说明 - >十进制值 - >位数
选项1 - > 1 - > 1
选项2 - > 2 - > 2
选项3 - > 4 - > 3
选项4 - > 8 - > 4
OptionX -> 137438953472 -> 38
现在我有以下值:0x7000000800000000。我怎样才能认识到,根据这个数字选择了哪些选项?
ulong v = 0x7000000800000000;
for(int i = 1; v != 0; ++i) {
if ((v & 1) != 0) Console.WriteLine(i);
v >>= 1;
}
或使用BitVector
类。
使用按位AND运算符&
,也可能使用位移运算符<<
(左移)和>>
(右移)。
例如,如果(options & (1 << (n - 1))) != 0
为真,则选择了选项n
。
我应该使用某种循环吗? –
虽然逻辑正确,但实际上并没有编译;) – ChrisF
@ChrisF:为什么C#不能包含通常的隐式转换? –
也许代码允许这些敲击效果? (纯猜测)。 – ChrisF