从十六进制中获取适当的值

时间:2012-01-21 23:19:53

标签: c# algorithm

假设我必须使用值来跟随表(第一行是描述)

  

说明 - > DECIMAL VALUE - > BIT NUMBER

     

选项1 - > 1 - > 1

     

选项2 - > 2 - > 2

     

选项3 - > 4 - > 3

     

选项4 - > 8 - > 4

OptionX -> 137438953472 -> 38

现在我有以下值: 0x7000000800000000 。我如何识别,根据该数字选择了哪些选项?

2 个答案:

答案 0 :(得分:2)

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

或使用BitVector类。

答案 1 :(得分:2)

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

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