【问题标题】:How to print raw byte content from a byte[] array to stdout in Java?java - 如何在Java中将字节[]数组中的原始字节内容打印到标准输出?
【发布时间】:2016-07-05 22:48:11
【问题描述】:

我正在做与这里描述的相同的项目:

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 循环块(带有变量 m 和 ii 的块),什么都不会打印出来。

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

编辑:

更具体一点:

我想写出原始字节。我想这样做,以便我的每个字节数组都紧随其后

【问题讨论】:

  • 如果您使用 System.out.write,您可能需要通过在代码末尾写入“\n”字符来刷新输出流。

标签: java bytearray


【解决方案1】:

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

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

编辑: 听起来您真正想做的是将字节写入标准输出,而不是打印它们。请参阅http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html 了解打印到流和写入流之间的区别。最简单的方法应该是调用 write(byte[] b) 方法:

System.out.write(buf);

【讨论】:

  • @BhavikAmbani:字节是数字,我不明白为什么您不能将数字打印到控制台。这就是上面所做的。
  • 但我想打印原始字节
  • 谢谢伙计。在您提出建议之前不久,我就遇到了 PrintStream。它确实以我想要的方式打印出来。我还在我的代码中的其他地方发现了一个导致奇怪行为的错误。再次感谢。
【解决方案2】:
 /* 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));

我想这会对你们有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2016-02-08
    • 2017-06-30
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多