2010-11-05 82 views
0

我有一些關於VB.NET位移的問題。我知道<< >>運算符是VB.NET中的位移運算符。VB.NET位移混淆

我有一個雙字節十六進制值​​3210,這兩個字節中的每一位代表一天,一個月或一年。該十六進制值的位結構是yyyy yyym mmmd dddd

我很困惑,我應該如何移位這些值,以便年,月和日在他們自己的UINT16值。應該移動的數字是什麼,我需要添加任何填充到班次?

回答

1

您將需要使用And以及位移操作來獲得您的結果。你需要向右移動(計算金額的「非年」位)以獲得正確的年份。爲了獲得一天,只需要And與設置了所有「日」位的值。提取月份將需要兩種技術的組合,或者是And然後>>>>然後And與正確的掩碼。


劇透:

  • 要提取年:月0x3ACC And 0x001F
  • 要提取:0x3ACC And 0x01E0 >> 5
+0

謝謝你幫助我0x3ACC >> 9

  • 要提取的日子非常!我現在完全理解。 – WizardsSleeve 2010-11-05 21:58:47