3

可能重复:
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);
4

2 回答 2

2

将二进制转换为整数:

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

然后把整数转成ascii:

char character = (char)ascii;
于 2012-10-19T01:01:36.003 回答
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("")) {

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

于 2012-10-19T02:14:41.210 回答