2010-11-05 60 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