如何从短路中获取第 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
我正在编写一个以字节为单位读取的 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