我想将八进制数转换为二进制数,以用于与我的航空电子设备相关的目的(转发器具体)。我在业余时间做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
答案 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)