2012-10-19 71 views
3

可能重複:
Binary to text in Java如何將二進制轉換爲Java中的文本?

我正在寫一個程序,可以轉換多個的東西,但我需要用二進制的轉換提供幫助。我有我的代碼文本到二進制工作,但我不確定二進制到文本。這裏是我的觸發轉換按鈕代碼:

String code = jTextArea5.getText(); 
if (code == null) { 
    System.out.println(jTextArea1.getText()); 
    String writing = jTextArea1.getText(); 

    byte[] bytes = writing.getBytes(); 
    StringBuilder binary = new StringBuilder(); 

    for (byte b : bytes) { 
     int val = b; 

     for (int i = 0; i < 8; i++){ 
      binary.append((val & 128) == 0 ? 0 : 1); 
      val <<= 1; 
     } 
     binary.append(' '); 
    } 

    jTextArea5.setText("" + binary); 
} 
else 
{ 
    System.out.println(jTextArea1.getText()); 
    String binary = jTextArea1.getText(); 

    int ascii = Integer.parseInt(binary, 2); 
    char character = (char)ascii; 

    jTextArea5.setText("" + character); 
} 

如果有人知道如何解決這個代碼工作,那簡直太好了。謝謝!

注 - 下面的這一部分是在它自己的工作,只是沒有任何努力允許將jTextArea5中的二進制轉換爲jTextArea1中的文本。

System.out.println(jTextArea1.getText()); 
    String writing = jTextArea1.getText(); 

    byte[] bytes = writing.getBytes(); 
    StringBuilder binary = new StringBuilder(); 

    for (byte b : bytes) { 
     int val = b; 

     for (int i = 0; i < 8; i++){ 
      binary.append((val & 128) == 0 ? 0 : 1); 
      val <<= 1; 
     } 
     binary.append(' '); 
    } 

    jTextArea5.setText("" + binary); 
+0

您可以給出示例二進制輸入並解釋輸出文本應該用於什麼嗎? –

+0

如果我在jTextArea5中輸入'01110100 01100101 01110011 01110100',我應該在jTextArea1中得到'test'。反之亦然。 –

+0

你需要把它切成8塊。你可以使用StringTokenizer來做到這一點 – case1352

回答

1

交換的5和1的周圍,以便它抓住二進制出來的正確的文本框。

而使用的StringTokenizer處理8

不要的每個塊忘記導入的StringTokenizer

else 
    { 
     System.out.println(jTextArea5.getText()); 
     String binary = jTextArea5.getText(); 
     StringTokenizer st = new StringTokenizer(binary," "); 
     while(st.hasMoreTokens()){ 
      int ascii = Integer.parseInt(st.nextToken(), 2); 
      char character = (char)ascii; 
      jTextArea1.setText(jTextArea1.getText() + "" + character); 

     } 
    } 

該位檢查什麼在jTextArea5.getText()

if (code == null) { 

改變它

if (code.equals("")) { 

,並確保在開始任何轉換之前清除文本框中的內容

+0

啊,它的工作原理!但是將文本轉換爲二進制文件由於某種原因停止了工作如問題所示,這段代碼可以自行工作,但在這個if/else塊內,它只是因爲不明原因而停止工作......你能解釋一下嗎? –

+0

是的,它現在工作完美!非常感謝:) 出於好奇,'code == null'版本和'code.equals(「」))'版本有什麼區別? –

2

轉換的二進制轉換成一個整數:

String binary = "010101";  
int ascii = Integer.parseInt(binary, 2); 

然後轉動整數轉換成ASCII:

char character = (char)ascii; 
+0

我只在學習Java一週後感到抱歉,所以我的理解是有限的。這些代碼到底在哪裏,它們是如何工作的? –

+0

是的,我將解釋佈局: 有兩個文本區域,一個在另一個之下。 在它們旁邊有一個名爲Convert的按鈕和一個名爲Wipe的按鈕。 擦拭只需擦拭兩個盒子的內容。 用於將第一個文本框中的文本轉換爲二進制文件的轉換。 我現在試圖允許在第二個輸入二進制文件在第一個。 –

+0

好吧,除了這一行(它表示意想不到的類型,需要的值,但找到類)之外,現在一切都很順利: jTextArea5.setText(「」+ char); –

相關問題