vb.net - 十六进制,按位问题

时间:2011-04-08 19:18:39

标签: vb.net bit-manipulation

我正在试图弄清楚如何计算两个十六进制数的低7位和7-13位。

以下是一些示例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。

有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

VB.NET没有位移运算符,但确实有位运算符And:

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

修改

自.NET Framework 1.1以来,VB.NET确实有位移操作符(我的坏),所以更系统的方法确实也是可能的:

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

答案 1 :(得分:0)

代码转换为这个VB代码:

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

如果十六进制值64实际上是一个变量输入,只需用输入变量替换&h64。如果输入是整数,则必须将结果转换为byte:

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