当前位置: 首页 > 面试题库 >

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

殳勇
2023-03-14
问题内容

有什么方法可以将Java转换String为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());
}

问题答案:

你的方法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。转换为a时byte[],对于给定的字形,你将获得不同的字节细分String,具体取决于所选的字符集。



 类似资料:
  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 有没有办法将Java转换为(而不是装箱的)? 在尝试此过程中: 我得到了不同的输出。无法显示第一个输出,因为它是gzip字符串。 第二个是地址。我做错什么了吗?我需要一个中的结果来将其馈送到gzip解压缩器,如下所示。

  • 问题内容: 我发现了有关从java字符串获取java.util.streams.IntStream的问题,但是由于我使用的是Java 8,所以我没有找到此方法。 更正:正如你们指出的那样,我正在使用Java7。现在该方法就在那里。但问题仍然适用: 如何从字符串中获取a ? 问题答案: 我会指出较早的关于这个主题的答案,但是事实证明您已经与这个问题联系了。在对方的回答也提供了有用的信息。 如果需要值

  • 问题内容: 如何使用JavaScript转换字节数组中的字符串。输出应等效于以下C#代码。 由于UnicodeEncoding默认为具有Little-Endianness的UTF-16。 编辑: 我需要使用上面的C#代码将字节数组生成的客户端与服务器端生成的字节数组进行匹配。 问题答案: 在C#中运行 将创建一个数组 对于代码大于255的字符,它将如下所示 如果您希望在JavaScript中实现非

  • 问题内容: 我正在阅读有关python的新f字符串的 博客 ,它们看起来很整洁。但是,我希望能够从字符串或文件中加载f字符串。 我似乎找不到任何执行此操作的字符串方法或其他函数。 从上面我的链接中的示例: 但是,如果我有琴弦怎么办?我希望能够像这样: 事实证明,我已经可以执行类似的操作并获得性能提高。即: 问题答案: f字符串是代码。不仅以安全的方式(当然,字符串文字就是代码),而且以危险的任意代

  • 问题内容: 我想遍历每个单独的ArrayList。我不知道如何将字符串转换为适当的ArrayList对象。 问题答案: 这种语法看起来像是JSON的子集,我猜想客户端实际上是将其编码为JSON。假设这是真的,最简单的方法将是使用现成的JSON解析器和一些简单的Java代码将结果对象转换为代码所需的形式。 当然,您可以手动实现自己的解析器,但是这样做可能不值得,尤其是如果您必须处理字符串转义,空格中