どのように私は情報を失うことなく、文字列のバイトを保存することができますか?

MikeSuspend:

私は、JPEGデコーダを開発しています(私はハフマン段階にいる)と私がしたいファイルにBinaryStringのを書き込みます。例えば、我々は、このをしたとしましょう:

String huff = "00010010100010101000100100";

私はビットを書き込むことができないとして、8によって整数splitingそれに変換し、represantation整数、それを保存しようとしました:

huff.split("(?<=\\G.{8})"))
int val = Integer.parseInt(str, 2);
out.write(val); //writes to a FileOutputStream

私が保存しようとする場合、問題は、私の例では、つまり「00010010」は、それはそれを変換18(10010)、およびIは0を必要としています。

そして最後に、私が読んだとき:

int enter;
String code = "";
    while((enter =in.read())!=-1) {
            code+=Integer.toBinaryString(enter);
        }

私が得ました:

Code = 10010

の代わりに:

Code = 00010010

また、私はそれがビットセットに変換しようとしました、その後、バイト[]に、私は同じ問題を抱えてきました。

kaya3:

あなたの例では、文字列を持っているということです"10010"、あなたは文字列をしたいです"00010010"つまり、あなたは左パッドにゼロで、この文字列を必要としています。(注)に多くのコールの結果を結合しているため、というInteger.toBinaryStringループで、あなたはそれらを連結する前に、左パッドにループ内でこれらの文字列を必要としています。

while((enter = in.read()) != -1) {
    String binary = Integer.toBinaryString(enter);
    // left-pad to length 8
    binary = ("00000000" + binary).substring(binary.length());
    code += binary;
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=330944&siteId=1