【问题标题】:Converting from octal to binary in vb.net在 vb.net 中从八进制转换为二进制
【发布时间】:2015-10-09 01:05:12
【问题描述】:

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

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

这是它的外观(不能发布超过 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

【问题讨论】:

标签: .net vb.net binary octal


【解决方案1】:

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

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)

【讨论】:

  • 抱歉,没看到你编辑过它。但是除非我做错了什么,否则我会得到错误的转换。例如:1000 与 4000 相同 Private Sub Button1_Click(sender As Object, e As EventArgs) HandlesButton1.Click Dim str As String Dim str2 As String() str = OctToBin(TextBox1.Text) str2 = ToBinBytes(str) TextBox2.Text = str2(0) TextBox3.Text = str2(1) TextBox4.Text = str2(2) TextBox5.Text = str2(3) TextBox6.Text = str2(0) + str2(1) + str2(2) + str2(3) End Sub
  • 我没有得到你所做的异常,但我确实在ToBinBytes 中发现了一个错误,该错误现已修复。我按照示例所示进行了测试。
猜你喜欢
  • 2015-09-06
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 2015-09-15
  • 2021-09-10
  • 1970-01-01
相关资源
最近更新 更多