如何在VB.NET中将16位值拆分为两个8位值?

Ari*_*Das 2 vb.net 16-bit 8-bit

我有一个像这样的16位值:

 0000000000000011
Run Code Online (Sandbox Code Playgroud)

我想将它分成两个8位值,如:

 00000000    and    00000011
Run Code Online (Sandbox Code Playgroud)

16位值是一个变量byte_val1,它是无符号的16位整数.

我怎么能在VB.NET中做到这一点?

Guf*_*ffa 7

你可以使用这个BitConverter类:

Dim bytes As Byte() = BitConverter.GetBytes(byte_val1)
Run Code Online (Sandbox Code Playgroud)

现在bytes(0)包含低位字节(00000011)并bytes(1)包含高字节(00000000).


Dmi*_*try 5

要获得低8位,你需要和它一起使用11111111,或者0xff
要获得高8位,你需要和它一起使用1111111100000000,或者0xff00
然后算术左移恰好是8位.

我有一段时间没有做过Visual Basic,但想法如下:

word a = 1930392;
byte alower = a & 0xff;
byte ahigher = (a & 0xff00) >> 8;
Run Code Online (Sandbox Code Playgroud)

哦,这是我与三个文本框命名做了代码a,alower,aupper和一个按钮btnDoIt:

Private Sub btnDoIt_Click(sender As Object, e As EventArgs) Handles btnDoIt.Click
    Dim localA = Integer.Parse(a.Text())
    Dim localALower = localA And &HFF
    Dim localAUpper = (localA And &HFF00) >> 8

    alower.Text = localALower
    aupper.Text = localAUpper
End Sub
Run Code Online (Sandbox Code Playgroud)

旁注:(localA And &HFF00) >> 8是公平的(localA >> 8) And &HFF