在vb.net中从八进制转换为二进制

时间:2015-10-09 01:05:13

标签: .net vb.net binary octal

我想将八进制数转换为二进制数,以用于与我的航空电子设备相关的目的(转发器具体)。我在业余时间做vb.net,自己学习。但就此而言,即使在谷歌搜索之后,我也不确定该怎么做。

以下是我到目前为止设置的方式:form1

这是我到目前为止的所有代码。这样只能输入1-7的数字:

Public Class Form1    
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    If Asc(e.KeyChar) <> 8 Then
        If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 55 Then
            e.Handled = True
        End If
    End If
End Sub
End Class

我不确定如何将Textbox1.text转换为二进制文件,然后将其分成以下文本框中的A,B,C,D。

Ex:You have A4, A2, and A1 (the 000). Those add to 7 (111). This is repeated for B,C, and D.

总而言之,我希望将八进制数转换为二进制数,如果可以的话,将其分成对应于字母的单独框。

它应该是这样的(不能发布超过2个链接): 2134 = A4,2,1(010)B4,2,1(001)C4,2,1(011)D4,2,1(100)

编辑:我尝试过Convert.ToString(#NUMBER,2),但它返回了错误的二进制代码。 7631返回1110111001111但应该是111110011001.请参阅http://ncalculators.com/digital-computation/binary-octal-converter.htm

1 个答案:

答案 0 :(得分:0)

将八进制字符串转换为二进制字符串:

Private Function OctToBin(octal As String) As String
    Return Convert.ToString(Convert.ToInt32(octal, 8), 2)
End Function

将二进制字符串转换为三字符子串的数组:

Private Function ToBinBytes(binary As String) As String()
    Dim chars = binary.Reverse().ToArray()
    Dim binBytes As New List(Of String)

    Do While chars.Length > 0
        Dim byteChars = chars.Take(3).Reverse().ToArray()

        binBytes.Add(New String(byteChars).PadLeft(3, "0"c))
        chars = chars.Skip(3).ToArray()
    Loop

    Return binBytes.AsEnumerable().Reverse().ToArray()
End Function

两者都未经过测试,但我认为他们是对的。

使用此代码进行测试:

Dim n = 1234567
Dim o = Convert.ToString(n, 8)
Dim b = OctToBin(o)

MessageBox.Show((n = Convert.ToInt32(b, 2)).ToString())
MessageBox.Show(String.Join(Environment.NewLine, ToBinBytes(b)), b)
相关问题