How can I save a String Byte without losing information?

MikeSuspend :

I'm developing a JPEG decoder(I'm in the Huffman phase) and I want to write BinaryString's into a file. For example, let's say we've this:

String huff = "00010010100010101000100100";

I've tried to convert it to an integer spliting it by 8 and saving it integer represantation, as I can't write bits:

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

The problem is that, in my example, if I try to save "00010010" it converts it to 18 (10010), and I need the 0's.

And finally, when I read :

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

I got :

Code = 10010

instead of:

Code = 00010010

Also I've tried to convert it to bitset and then to Byte[] but I've the same problem.

kaya3 :

Your example is that you have the string "10010" and you want the string "00010010". That is, you need to left-pad this string with zeroes. Note that since you're joining the results of many calls to Integer.toBinaryString in a loop, you need to left-pad these strings inside the loop, before concatenating them.

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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=323376&siteId=1