gpt4 book ai didi

java - 再次将 bytes[].toString() 转换为 byte[]

转载 作者:行者123 更新时间:2023-12-01 23:21:43 25 4
gpt4 key购买 nike

这是我的代码:

    byte[] bytes = ZipUtil.compress("string");
String str = bytes.toString();
//----------
System.out.println("bytes: " + bytes);
System.out.println("str: " + str);
System.out.println("str.getBytes(): " + str.getBytes());

如您所见,ZipUtil.compress() 返回 byte[]

如何将 str 内容转换为 byte[] ?

UPDATE:

输出:

    bytes:          [B@6fd33eef
str: [B@6fd33eef
str.getBytes(): [B@15c8f644

如您所见,如果我使用 str.getBytes() 内容将会更改!

最佳答案

首先,对数组调用 toString() 不会返回包含数组中字节的字符串。它将返回数组的类型([B 表示字节数组),后跟其哈希码:[B@6fd33eef。所以你的代码不正确。

您可以使用new String(bytes)从字节数组内容创建一个字符串,但这也是不正确的,因为它取决于您的默认编码,并且字节可能不代表此编码中的有效字符。只有 iso8859-1 可以工作,但您会得到一个充满不可打印字符的字符串。

您可能需要一个可打印的字符串,而不是字符串中的垃圾字符,因此您需要一个 Base64 或十六进制编码器将字节转换为字符串,反之亦然。 Guava有这样的编码器,还有Apache commons-codec 。两者都提供了将字节数组编码为可打印的 Base64 字符串的方法,以及将此 Base64 字符串解码为原始字节数组的方法。

关于java - 再次将 bytes[].toString() 转换为 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20543855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com