0

ゼロをカットせずにファイルに2進数を書き込むにはどうすればよいですか。

私はこのように書いています:

byte[] b = new BigInteger("1011010101010110", 2).toByteArray();

FileOutputStream fos = new FileOutputStream("file",true);
fos.write(b);

しかし、たとえば、 0000001 を書き込むと、ファイルに 1 だけ書き込み、ゼロを無視します。 001001001000 を書き込むと、左側のゼロが無視され、一度に 8 ビットが右から左に読み取られます。

2 進数をファイルに書き込む正しい方法は何ですか? これが正しい方法である場合、ファイルを間違った方法で読み取ろうとしている可能性があります ( InputStream の read() を使用しています)

Ps-(8 桁は 1 バイトでなければならないため、文字列として書き込むことはできません。各桁が 1 バイトであるためです。)

4

2 に答える 2

2

このようなものを試すことができます

    String s = "0000001";
    byte[] a = new byte[s.length()];
    for (int i = 0; i < s.length(); i++) {
        a[i] = (byte) (s.charAt(i) & 1);
    }
于 2013-04-01T13:03:07.970 に答える
0

バイナリとして書きたいのではなく、バイナリを表す文字列として書きたいのです。問題は、Java にはパディングが必要かどうかを知る方法がないことです。2進数を文字列に変換してから、左に0を埋め込むことをお勧めします(Apache StringUtilsがこれに役立ちます)

于 2013-04-01T12:59:15.843 に答える