在 vb.net 中从八进制转换为二进制
Converting from octal to binary in vb.net
我想将八进制数转换为二进制数以用于与我的航空电子设备相关的目的(具体来说是转发器)。我在业余时间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 的以下文本框。
例如:You have A4, A2, and A1 (the 000). Those add to 7 (111). This is repeated for B,C, and D.
综上所述,我想将八进制数转换为二进制数,如果可以的话,将其分成与字母对应的单独的框。
这是它的外观(不能 post 超过 2 个链接):
2134 = A4,2,1(010) B4,2,1(001) C4,2,1(011) D4,2,1(100)
编辑:我试过 Convert.ToString(#NUMBER, 2) 但它 returns 是错误的二进制代码。 7631 returns 1110111001111 但它应该是 111110011001。请参阅 http://ncalculators.com/digital-computation/binary-octal-converter.htm
要将八进制字符串转换为二进制字符串:
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)
我想将八进制数转换为二进制数以用于与我的航空电子设备相关的目的(具体来说是转发器)。我在业余时间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 的以下文本框。
例如:You have A4, A2, and A1 (the 000). Those add to 7 (111). This is repeated for B,C, and D.
综上所述,我想将八进制数转换为二进制数,如果可以的话,将其分成与字母对应的单独的框。
这是它的外观(不能 post 超过 2 个链接): 2134 = A4,2,1(010) B4,2,1(001) C4,2,1(011) D4,2,1(100)
编辑:我试过 Convert.ToString(#NUMBER, 2) 但它 returns 是错误的二进制代码。 7631 returns 1110111001111 但它应该是 111110011001。请参阅 http://ncalculators.com/digital-computation/binary-octal-converter.htm
要将八进制字符串转换为二进制字符串:
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)