如何从短路中获取第 9 位

How to get the 9th Bit from a short

我正在编写一个以字节为单位读取的 VB.NET 应用程序。我有一个短片,其中包含从外部来源收到的 2 个字节。我现在需要从高字节获取 "Bit 8",我不知道该怎么做 我可以让 "bit 1" 返回 true 来告诉我源是否已打开但无法获取 "bit 8" 我假设它在第二个字节中。

我试过了

Dim bit8 = (p_Value And (1 >> 512 - 1)) <> 0

这适用于位 1

Dim bit1 = (p_Value And (1 << 1 - 1)) <> 0

设备文件给我

low byte

bit 0 through to bit7

High byte

bit 8 *the one i want through to bit 15

我已经搜索过了,但似乎所有内容都是针对单个字节的。

菲尔

您应该能够使用此函数并检查结果,如果该位已设置 (1) 或 False 如果该位未设置 ( 0):

Function IsBitSet(value As Integer, bit As Integer) As Boolean
    Return ((value And CInt(2 ^ bit)) > 0)
End Function

如果您正在使用短裤,您可以使用左移

    Dim shrt As Short = 256S ' bit 8 on

    If (shrt And 1 << 8) <> 0 Then
        Stop
    End If

另一种方法是使用 BitArray class。然后你会有一组布尔值,每个位一个:

Public Sub Main()
    Dim value As Short = 123
    Dim ba As New BitArray(BitConverter.GetBytes(value))

    'Get 9th bit.  Bit indexing starts at 0
    Dim bit9 = ba(8)
End Sub