有没有办法将Java字符串
转换为字节[]
(而不是装箱的字节[]
)?
在尝试此过程中:
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
表示字节[]
,38EE9F13
是内存地址,由@
分隔。
出于显示目的,您可以使用:
Arrays.toString(bytes);
但这将只是显示为逗号分隔的整数序列,这可能是也可能不是您想要的。
若要从字节[]
中获取可读的字符串
,请使用:
String string = new String(byte[] bytes, Charset charset);
之所以喜欢字符集
版本,是因为Java中的所有字符串
对象都以UTF-16的形式存储在内部。当转换为byte[]
时,您将得到该字符串
的给定字形的不同字节分解,这取决于所选的字符集。
问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。
谁能让我知道如何在Java将protobuf字节字符串转换成字符串吗? 在我的例子中,我获得的字节字符串值为“\376\024\367”。有没有办法从bytestring中得到与String相同的东西?我的意思是,当我使用system.out.println()在控制台中打印字符串值时,我应该得到\376\024\367。 多谢。
问题内容: 我正在阅读有关python的新f字符串的 博客 ,它们看起来很整洁。但是,我希望能够从字符串或文件中加载f字符串。 我似乎找不到任何执行此操作的字符串方法或其他函数。 从上面我的链接中的示例: 但是,如果我有琴弦怎么办?我希望能够像这样: 事实证明,我已经可以执行类似的操作并获得性能提高。即: 问题答案: f字符串是代码。不仅以安全的方式(当然,字符串文字就是代码),而且以危险的任意代
问题内容: 我发现了有关从java字符串获取java.util.streams.IntStream的问题,但是由于我使用的是Java 8,所以我没有找到此方法。 更正:正如你们指出的那样,我正在使用Java7。现在该方法就在那里。但问题仍然适用: 如何从字符串中获取a ? 问题答案: 我会指出较早的关于这个主题的答案,但是事实证明您已经与这个问题联系了。在对方的回答也提供了有用的信息。 如果需要值
问题内容: 有什么方法可以将Java转换而不是盒装)? 在尝试这个: 我得到单独的输出。由于是gzip字符串,因此无法显示第一个输出。 第二个是地址。我做错了什么吗?我需要将结果byte[]送入gzip解压缩器,如下所示。 问题答案: 你的方法需要的对象是。 因此,对你提出的问题的基本技术回答是: 但是,你似乎在努力解决的问题是,它显示得不是很好。调用toString()只会为你提供默认名称,即类
如何将字符串(字节字符串)转换为字节(字节字符串),而不必手动复制和粘贴字符串并在其前面放置b?