从打包字中获取位

Getting bits from a packed word

我有一个 16 位字,可以是 1 到 16 个数据值之间的任何值。通过了解 16 位字的 MSB 和 lsb 并获取这些位来解码它们。

我正在使用 VB,但我不知道该怎么做。

例子 我有一个词就是
&HA6F2
1010 0100 1111 0010

我知道我的数据是 LSB 3 到 MSB 9。位顺序是从左到右 所以数据是010011

我如何在 VB 代码中得到这个?我想以字节为单位工作,因为在我得到打包位之后我必须对其进行类型转换(signed_fixed、整数、2 的补码等)

谢谢

您应该使用 mask按位 AND,参见 And 关键字)。也可能 bitwise-right-shift (参见 >> 运算符)

概念上:

1010 0100 1111 0010 '= the data
0001 1111 1100 0000 '= 1FC0 the mask
-------------------- And
0000 0100 1100 0000 '= 04C0
-------------------- >> 6
0000 0000 0001 0011 '= 0013 now your value is in the right most

在代码中

Dim newData As Integer = (rawData And &H1FC0) >> 6