Reputation: 181
I am doing the same project as describe here:
Wrap deflated data in gzip format
My problem is that when I try to print out bytes, I get weird results. My problems occur in the following code(Sorry for my bad choice of variables):
for(int k = 0; k < head.length; k++){
System.out.write(head[k]);
}
for(int m = 0; m < a.size(); m++){
int comprlength = a.get(m).getclength();
for(int ii = 0; ii < comprlength; ii++){
System.out.write(a.get(m).getcompr()[ii]);
}
}
for(int j = 0; j < f1.length; j++){
System.out.write(f1[j]);
}
for(int ll = 0; ll < total_d.length; ll++){
System.out.write(total_d[ll]);
}
The last two for-loops do not print out the contents of the their byte arrays. Thus I get a unexpected end of file error when using gzip. The weird thing is that if I comment out the second for-loop block (the block with the variables m and ii), nothing gets printed out.
So how do I properly print out the contents of my byte arrays? Why does the first for-loop print out properly when the second for-loop is not commented and why does it not print anything if that second for-loop is commented?
EDIT:
To be more specific:
I want to write out the raw bytes. And I want to do it so that it is right after each other for every one of my byte arrays
Upvotes: 17
Views: 114262
Reputation: 1176
Assuming your byte array is called buf:
System.out.println(Arrays.toString(buf));
Edit: It sounds like what you really want to do is write your bytes to stdout, not print them. See http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html for the difference between printing to a stream and writing to it. Easiest way should be to call the write(byte[] b) method:
System.out.write(buf);
Upvotes: 55
Reputation: 2825
/* There is an image / ic_launcher in the drawable folder for which I am making ByteArray */
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.img);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] mByteArray = stream.toByteArray();
/* here I am showing the raw data not in hexadecimal format */
System.out.println(Arrays.toString(mByteArray));
I think this will help you guys!
Upvotes: -3