Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to print raw byte content from a byte[] array to stdout in Java?

Tags:

java

bytearray

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

like image 289
XCBaller Avatar asked Dec 23 '12 08:12

XCBaller


People also ask

How do I print the contents of a byte array?

You can simply iterate the byte array and print the byte using System. out. println() method.

What is byte [] in Java?

A byte in Java is 8 bits. It is a primitive data type, meaning it comes packaged with Java. Bytes can hold values from -128 to 127. No special tasks are needed to use it; simply declare a byte variable and you are off to the races.

What is type Bytearray?

The bytearray type is a mutable sequence of integers in the range 0 <= x < 256. It has most of the usual methods of mutable sequences, described in Mutable Sequence Types, as well as most methods that the bytes type has, see Bytes and Byte Array Methods.


1 Answers

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);
like image 109
Gustav Grusell Avatar answered Oct 08 '22 09:10

Gustav Grusell