如何在Java中将byte 数组中的原始字节内容打印到stdout?

我正在做与此处描述的相同的项目:

以gzip格式包装缩小的数据

我的问题是,当我尝试打印字节时,我得到了奇怪的结果。 我的问题发生在以下代码中(抱歉我选择的变量不好):

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

最后两个for循环不打印其字节数组的内容。 因此,使用gzip时出现意外的文件错误。 奇怪的是,如果我注释掉第二个for-loop块(带有变量m和ii的块),则不会打印出任何内容。

那么如何正确打印出我的字节数组的内容呢? 为什么第二个for循环没有被注释时第一个for-loop打印正确,如果第二个for循环被注释,为什么它不打印?

编辑:

更具体:

我想写出原始字节。 我想这样做,以便它对于我的每个字节数组都是正确的

假设你的字节数组被称为buf

  System.out.println(Arrays.toString(buf)); 

编辑:听起来你真正想做的是将你的字节写入stdout,而不是打印它们。 有关打印到流和写入流之间的区别,请参阅http://sofzh.miximages.com/java/ Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.img); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); byte[] mByteArray = stream.toByteArray();

/ *这里我显示的不是hex格式的原始数据* /

  System.out.println(Arrays.toString(mByteArray)); 

我想这对你们有帮助!