发布日期:2018-03-26
如何将java字符串转换成字节数组?+ 查看更多
如何将java字符串转换成字节数组?
+ 查看更多
发布日期:2018-03-23 17:19
分类:JAVA
浏览次数:172
有什么办法可以把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二是地址。我做错什么了吗?我需要一个字节数组的结果来给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 bu
回答
你的方法decompressgzip()需要的对象是一个字节数组。
因此你问的问题的基本的,技术性的答案是:
byte[] b = string.getBytes(); byte[] b = string.getBytes(Charset.forName("UTF-8")); byte[] b = string.getBytes(StandardCharsets.UTF_8); // Java 7+ onl然而,你失败的问题似乎是,这并不显示非常好。调用tostring()方法只会给你默认Object.toString()。tostring()这类名+内存地址。在你的结果[ b 38ee9f13,B表示字节的[ [ ]和38ee9f13是内存地址,由分离。
用于显示用途,您可以使用:
Arrays.toString(bytes);但这只会显示为逗号分隔整数的序列,这可能或可能不是你想要的。
要从字节中获取可读字符串数组,使用:
String string = new String(byte[] bytes, Charset charset);因为该字符集的版本是被支持的,java中的所有字符串对象内部存储为UTF-16。当转换成byte []你会得到一个不同的击穿字节为给定字符串的符号,这取决于所选择的字符集。