1

假设我有一个二进制字符串(“0 和 1s”)并且我想将此字符串写入二进制文件,这如何在 java 中完成?我尝试转换为 ASCII 值字符串,然后从中创建一个 ByteArrayInputStream,但超过 127 的值无法正确显示。谁能帮我这个?我的 binaryToAscii 方法:

public static String BinaryToAscii(String bin){
    int num_of_bytes = bin.length()/8;
    StringBuilder sb = new StringBuilder();
    int index = 0;
    String byte_code;
    Character char_code;
    for (int i =0; i<num_of_bytes;i++){
        index = i*8;
        byte_code = bin.substring(index,index+8);
        int charCode = Integer.parseInt(byte_code, 2);
        char_code = new Character((char)charCode);
        sb.append(char_code);
    }
    return sb.toString();
}

然后我将返回的字符串转换为 ByteArrayInputStream 使用

InputStream is = new ByteArrayInputStream(ascii.toString().getBytes());

4

2 回答 2

1

要将字符串转换为二进制,请使用以下命令:您首先需要将字符串分解为单独的字母,然后一次运行它们。

char letter = c;
  byte[] bytes = letter.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(' ');
  }
  System.out.println(binary);
于 2013-01-15T02:55:22.837 回答
1

您首先将 0 / 1 字符串转换为字节 []。

然后写出使用

DataOutputStream.writeByte().

read in with
DataInputStream.readUnsignedByte() // to get 0 - 255
于 2013-01-15T02:13:11.377 回答