33

我需要将字节数组转换为 ByteArrayOutputStream 以便我可以在屏幕上显示它。

4

3 回答 3

56
byte[] bytes = ....;
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length);
baos.write(bytes, 0, bytes.length);

方法说明:

从偏移量 off 开始的指定字节数组中写入 len 个字节到此字节数组输出流。

于 2013-09-02T14:31:07.287 回答
0

您无法显示 ByteArrayOutputStream。我怀疑你想要做的是

byte[] bytes = ...
String text = new String(bytes, "UTF-8"); // or some other encoding.
// display text.

您可以让 ByteArrayOutputStream 做类似的事情,但这不是明显、有效或最佳实践(因为您无法控制使用的编码)

于 2013-09-02T15:04:59.317 回答
0

使用JDK/11,您可以使用writeBytes(byte b[])最终调用 Josh 答案write(b, 0, b.length)中所建议的 API 。

/**
 * Writes the complete contents of the specified byte array
 * to this {@code ByteArrayOutputStream}.
 *
 * @apiNote
 * This method is equivalent to {@link #write(byte[],int,int)
 * write(b, 0, b.length)}.
 *
 * @param   b     the data.
 * @throws  NullPointerException if {@code b} is {@code null}.
 * @since   11
 */
public void writeBytes(byte b[]) {
    write(b, 0, b.length);
}

示例代码将简单地转换为 -

byte[] bytes = new byte[100];
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length);
baos.writeBytes(bytes);
于 2018-08-10T15:16:21.370 回答