我对VB.NET位移有一些疑问。我理解<< >>
运算符是VB.NET中的位移运算符。
我有一个双字节十六进制值0x3ACC
,这两个字节中的每一位代表一天,一个月或一年。此十六进制值的位结构为yyyy yyym mmmd dddd
。
我很困惑我应该如何改变这些值,以便年,月和日都在他们自己的UINT16
值中。移位数应该是什么?我需要在移位中添加任何填充吗?
答案 0 :(得分:1)
您将需要使用And
以及位移操作来获得结果。您需要向右移动(计算金额的“非年”位)才能获得年份。为了得到这一天,只需And
,其值设置为所有“日”位。提取月份需要结合使用这两种技术,And
然后>>
或>>
,然后And
使用正确的掩码。
扰流板:
0x3ACC >> 9
0x3ACC And 0x001F
0x3ACC And 0x01E0 >> 5