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;
}