如何在Java中将二进制文件转换为文本?

时间:2012-10-19 00:52:20

标签: java text binary ascii

  

可能重复:
  Binary to text in 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);

2 个答案:

答案 0 :(得分:2)

将二进制转换为整数:

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

然后将整数转换为ascii:

char character = (char)ascii;

答案 1 :(得分: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("")) {

并确保在开始转换之前清除文本框中的内容