2012-01-21 195 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

我應該使用某種循環嗎? –