0
我有一些关于VB.NET位移的问题。我知道<< >>
运算符是VB.NET中的位移运算符。VB.NET位移混淆
我有一个双字节十六进制值3210,这两个字节中的每一位代表一天,一个月或一年。该十六进制值的位结构是yyyy yyym mmmd dddd
。
我很困惑,我应该如何移位这些值,以便年,月和日在他们自己的UINT16
值。应该移动的数字是什么,我需要添加任何填充到班次?
我有一些关于VB.NET位移的问题。我知道<< >>
运算符是VB.NET中的位移运算符。VB.NET位移混淆
我有一个双字节十六进制值3210,这两个字节中的每一位代表一天,一个月或一年。该十六进制值的位结构是yyyy yyym mmmd dddd
。
我很困惑,我应该如何移位这些值,以便年,月和日在他们自己的UINT16
值。应该移动的数字是什么,我需要添加任何填充到班次?
您将需要使用And
以及位移操作来获得您的结果。你需要向右移动(计算金额的“非年”位)以获得正确的年份。为了获得一天,只需要And
与设置了所有“日”位的值。提取月份将需要两种技术的组合,或者是And
然后>>
或>>
然后And
与正确的掩码。
剧透:
0x3ACC And 0x001F
0x3ACC And 0x01E0 >> 5
谢谢你帮助我
0x3ACC >> 9