从打包的单词中获取位

时间:2016-01-13 01:47:26

标签: vb.net bitwise-operators

我有一个16位字,可以是1到16个数据值。通过知道16位字的MSB和lsb并抓取这些位来解码它们。

我正在使用VB而我只是不知道该怎么做。

实施例 我有一个词是     &安培; HA6F2
    1010 0100 1111 0010

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

如何在VB代码中获得此功能?我想以字节为单位工作,因为在得到打包后我必须对其进行类型转换(signed_fixed,integer,2的补码等)

由于

1 个答案:

答案 0 :(得分:1)

您应该使用mask按位 AND,请参阅And关键字)。也可能按位右移(参见>>运算符)

概念:

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