2011-04-08 41 views
0

我想弄清楚如何計算兩個十六進制數字的低7位和7-13位。vb.net - 十六進制,按位問題

下面是一些實施例C代碼,只需要這在vb.net:

serialBytes[2] = 0x64 & 0x7F; // Second byte holds the lower 7 bits of target. 
serialBytes[3] = (0x64 >> 7) & 0x7F; // Third data byte holds the bits 7-13 of target 

的0x7F的是一個常數,使得根據改變關閉輸入是0x64的唯一號碼。

有人可以幫我嗎?

+0

我想你的意思是「低7位和8-14位」(根據示例代碼)? :) – mousio 2011-04-08 19:40:40

回答

0

該代碼翻譯成此VB代碼:

serialBytes(2) = &h64 And &h7F 
serialBytes(3) = (&h64 >> 7) And &h7F 

如果十六進制值64實際上是一個可變的輸入,只需更換&h64與輸入變量。但是,如果輸入是整數,則必須將結果轉換爲字節:

serialBytes(2) = CType(value And &H7F, Byte) 
serialBytes(3) = CType((value >> 7) And &H7F, Byte) 
+0

Purrrrrfect,謝謝! – Joe 2011-04-08 19:40:12

0

VB.NET沒有移位的運營商,但確實有位運算符和:

set bits1to7 = value And &H007F 
set bits8to14 = value And &H3F80 

編輯:

VB.NET確實有位移位運算符(我的壞),因爲。 NET Framework 1.1,所以更系統化的方法確實也是可能的:

set bits1to7 = value And &H7F 
set bits8to14 = (value >> 7) And &H7F 
+0

是的,VB有位移運算符:http://msdn.microsoft.com/en-us/library/2d9yb87a.aspx – Guffa 2011-04-08 19:34:05