如何在Java中将字节[]数组中的原始字节内容打印到标准输出?
我正在做与此处描述相同的项目: 我的问题是,当我试图打印出字节时,我会得到奇怪的结果。我的问题出现在以下代码中(很抱歉我选择了错误的变量):如何在Java中将字节[]数组中的原始字节内容打印到标准输出?,java,bytearray,Java,Bytearray,我正在做与此处描述相同的项目: 我的问题是,当我试图打印出字节时,我会得到奇怪的结果。我的问题出现在以下代码中(很抱歉我选择了错误的变量): for(int k=0;k
for(int k=0;k
最后两个for循环不打印其字节数组的内容。因此,在使用gzip时,我遇到了一个意外的文件结束错误。奇怪的是,如果我注释掉第二个for循环块(包含变量m和ii的块),就不会打印出任何内容
那么,如何正确地打印出字节数组的内容呢?为什么第一个for循环在第二个for循环未被注释时正确打印出来?如果第二个for循环被注释,为什么它不打印任何内容
编辑:
更具体地说:
我想写出原始字节。我想这样做,以便我的每个字节数组都紧跟在后面,假设您的字节数组被称为buf:
System.out.println(Arrays.toString(buf));
编辑:
听起来您真正想做的是将字节写入标准输出,而不是打印它们。有关打印到流和写入流之间的区别,请参见。最简单的方法应该是调用write(byte[]b)方法:
/*这里我显示的是非十六进制格式的原始数据*/
System.out.println(Arrays.toString(mByteArray));
我想这对你们会有帮助的 如果使用System.out.write,可能需要在代码末尾写入“\n”字符来刷新输出流。@BhavikAmbani:字节是数字,我不明白为什么不能在控制台上打印数字。以上就是这么做的。但我想打印原始的bytesThanks man。在你提出之前不久,我遇到了PrintStream。它确实按我想要的方式打印出来。我还在代码中的其他地方发现了一个导致这种奇怪行为的bug。再次感谢。
System.out.write(buf);
/* 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));