2015-10-09 44 views
0

爲了與我的航空電子相關的目的(發送應答器具體),我想將八進制數轉換爲二進制。我在業餘時間做了vb.net,自己學習。但是對於這一點,我不確定怎麼做,即使在谷歌搜索之後。在vb.net中將八進制轉換爲二進制

這是我如何有它成立至今:form1

這裏的一切我到目前爲止的代碼。這是所以只有numers 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.

所以總結的東西了,我要八進制數轉換成二進制的,如果我可以,它分成相應的字母單獨的盒子。 (010)B4,2,1(001)C4,2,1(011)D4,B4,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

的可能的複製(http://stackoverflow.com/questions/14048476/biginteger-to-hex-十進制八進制字符串) –

回答

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 

兩者都是未經檢驗的,但我認爲他們是對的。

與此代碼測試:?BigInteger的爲十六進制/十進制/八進制/二進制字符串]

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) 
+0

對不起,沒有看到你編輯它。但是我得到了錯誤的轉換,除非我做錯了什麼。例如: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' – Spencer

+0

我沒有得到你所做的例外,但是我確實在'ToBinBytes'中發現了一個bug,現在已經修復了。我按照示例中所示進行了測試。 – jmcilhinney

相關問題