2012-01-21 61 views
0

获取适当的值比方说,我一定要在与值表(第一行是描述)从十六进制

说明 - >十进制值 - >位数

选项1 - > 1 - > 1

选项2 - > 2 - > 2

选项3 - > 4 - > 3

选项4 - > 8 - > 4

OptionX -> 137438953472 -> 38 

现在我有以下值:0x7000000800000000。我怎样才能认识到,根据这个数字选择了哪些选项?

回答

2
ulong v = 0x7000000800000000; 
for(int i = 1; v != 0; ++i) { 
    if ((v & 1) != 0) Console.WriteLine(i); 
    v >>= 1; 
} 

或使用BitVector类。

+0

虽然逻辑正确,但实际上并没有编译;) – ChrisF

+0

@ChrisF:为什么C#不能包含通常的隐式转换? –

+0

也许代码允许这些敲击效果? (纯猜测)。 – ChrisF

2

使用按位AND运算符&,也可能使用位移运算符<<(左移)和>>(右移)。

例如,如果(options & (1 << (n - 1))) != 0为真,则选择了选项n

+0

我应该使用某种循环吗? –