1

バイナリ文字列( "0 and 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

まず、0/1文字列をbyte[]に変換します。

次に、を使用して書き出す

DataOutputStream.writeByte().

read in with
DataInputStream.readUnsignedByte() // to get 0 - 255
于 2013-01-15T02:13:11.377 に答える
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);
于 2013-01-15T02:55:22.837 に答える