【问题标题】:Getting bits from a packed word从打包的单词中获取位
【发布时间】:2016-01-13 01:47:25
【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

  • &HA6F2 => 1010 0110 1111 0010 !?

标签: vb.net bitwise-operators


【解决方案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

【讨论】:

    猜你喜欢
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2011-10-23
    • 2018-10-03
    • 2018-06-05
    • 2021-11-13
    • 2015-07-20
    相关资源
    最近更新 更多