我正在做与此处描述的项目相同的项目:
Wrap deflated data in gzip format
我的问题是,当我尝试打印字节时,我得到了奇怪的结果。我的问题出现在以下代码中(抱歉我选择的变量不好):
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循环打印正确,如果第二个for循环被注释,为什么它不打印任何内容?
编辑:
更具体一点:
我想写出原始字节。而且我想这样做,以便我的每一个字节数组都在彼此之后
答案 0 :(得分:43)
假设您的字节数组名为 buf :
System.out.println(Arrays.toString(buf));
编辑: 听起来你真正想做的就是将你的字节写入stdout,而不是打印它们。有关打印到流和写入流之间的区别,请参阅http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html。最简单的方法应该是调用write(byte [] b)方法:
System.out.write(buf);
答案 1 :(得分:-1)
/* 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();
/ *这里我显示的原始数据不是十六进制格式* /
System.out.println(Arrays.toString(mByteArray));
我认为这对你们有帮助!