为了账号安全,请及时绑定邮箱和手机立即绑定

如何将Java字符串转换为字节[]?

/ 猿问

如何将Java字符串转换为字节[]?

呼唤远方 2019-07-22 16:20:32

如何将Java字符串转换为字节[]?

有没有办法转换JavaString转到byte[] (盒装Byte[])?

在尝试中:

System.out.println(response.split("\r\n\r\n")[1]);System.out.println("******");
System.out.println(response.split("\r\n\r\n")[1].getBytes().toString());

我得到了不同的结果。无法显示第一个输出,因为它是一个gzip字符串。

<A Gzip String>******[B@38ee9f13

第二个是地址。我做错什么了吗?我需要结果byte[]将其提供给gzip解压缩程序,如下所示。

String decompressGZIP(byte[] gzip) throws IOException {
    java.util.zip.Inflater inf = new java.util.zip.Inflater();
    java.io.ByteArrayInputStream bytein = new java.io.ByteArrayInputStream(gzip);
    java.util.zip.GZIPInputStream gzin = new java.util.zip.GZIPInputStream(bytein);
    java.io.ByteArrayOutputStream byteout = new java.io.ByteArrayOutputStream();
    int res = 0;
    byte buf[] = new byte[1024];
    while (res >= 0) {
        res = gzin.read(buf, 0, buf.length);
        if (res > 0) {
            byteout.write(buf, 0, res);
        }
    }
    byte uncompressed[] = byteout.toByteArray();
    return (uncompressed.toString());}


查看完整描述

3 回答

?
慕雪6173905

你的方法的对象decompressGZIP()需要是byte[].

因此,你提出的问题的基本技术答案是:

byte[] b = string.getBytes();byte[] b = string.getBytes(Charset.forName("UTF-8"));
byte[] b = string.getBytes(StandardCharsets.UTF_8); // Java 7+ only

然而,你似乎在努力解决的问题是,这并不是很好地显示。呼叫toString()只会给你默认的Object.toString()它是类名+内存地址。在你的结果中[B@38ee9f13[B手段byte[]38ee9f13是内存地址,由@.

出于显示目的,您可以使用:

Arrays.toString(bytes);

但是这只会显示为逗号分隔的整数序列,这可能是你想要的,也可能不是你想要的。

以获得可读性String从一个byte[],使用:

String string = new String(byte[] bytes, Charset charset);

原因是Charset版本是最受欢迎的,是吗?StringJava中的对象以UTF-16的形式在内部存储。转换为byte[]您将得到给定的字形的字节的不同细分。String,取决于所选的字符集。


查看完整回答
反对 回复 2019-07-22
?
ibeautiful
 String example = "Convert Java String";
  byte[] bytes = example.getBytes();


查看完整回答
反对 回复 2019-07-22
?
喵喵时光机

尝试使用String.getBytes()。它返回一个表示字符串数据的字节[]。例子:

String data = "sample data";byte[] byteData = data.getBytes();


查看完整回答
反对 回复 2019-07-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信