将原始二进制文件写入文件java

时间:2013-01-15 02:06:49

标签: java binary

假设我有二进制字符串(“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());

2 个答案:

答案 0 :(得分:1)

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

然后使用

写出来
DataOutputStream.writeByte().

read in with
DataInputStream.readUnsignedByte() // to get 0 - 255

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