我正在试图弄清楚如何计算两个十六进制数的低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。
有人能帮助我吗?
答案 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)