Java 将字节[].toString()再次转换为字节[]

Java 将字节[].toString()再次转换为字节[],java,string,bytearray,Java,String,Bytearray,这是我的密码: 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());

这是我的密码:

    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
内容转换为字节[]

更新:

输出:

    bytes:          [B@6fd33eef
    str:            [B@6fd33eef
    str.getBytes(): [B@15c8f644
如您所见,如果我使用
str.getBytes()
内容将被更改
你喜欢这样吗

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

如果你考虑字符编码,那么就要这样做< /P>

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
你喜欢这样吗

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

如果你考虑字符编码,那么就要这样做< /P>

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
你喜欢这样吗

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

如果你考虑字符编码,那么就要这样做< /P>

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
你喜欢这样吗

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

如果你考虑字符编码,那么就要这样做< /P>

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
试一试 这边

按照修改后的问题进行更新,请按此方式执行

byte[] b = str.getBytes("UTF-8");
但若你们这样做,那个么编译器会抱怨添加你们抛出的声明或者用try-catch块包围 所以代码是这样的

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
试一试 这边

按照修改后的问题进行更新,请按此方式执行

byte[] b = str.getBytes("UTF-8");
但若你们这样做,那个么编译器会抱怨添加你们抛出的声明或者用try-catch块包围 所以代码是这样的

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
试一试 这边

按照修改后的问题进行更新,请按此方式执行

byte[] b = str.getBytes("UTF-8");
但若你们这样做,那个么编译器会抱怨添加你们抛出的声明或者用try-catch块包围 所以代码是这样的

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
试一试 这边

按照修改后的问题进行更新,请按此方式执行

byte[] b = str.getBytes("UTF-8");
但若你们这样做,那个么编译器会抱怨添加你们抛出的声明或者用try-catch块包围 所以代码是这样的

byte[] bytes = str.getBytes()
byte[] bytes = str.getBytes("UTF-8");
try {
        byte[] b=str.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
如何将str内容转换为字节[]

如何将str内容转换为字节[]

如何将str内容转换为字节[]

如何将str内容转换为字节[]


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

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


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

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

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


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

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

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


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

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

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


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

使用字节和字符串时始终考虑编码。使用字节和字符串时始终考虑编码。使用字节和字符串时始终考虑编码。使用字节和字符串时始终考虑编码。谢谢。我想发送字节数组(