Mkl*_*Rjv 503 java arrays string
有没有办法将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());
Run Code Online (Sandbox Code Playgroud)
而我正在获得单独的输出.无法显示第一个输出,因为它是一个gzip字符串.
<A Gzip String>
******
[B@38ee9f13
Run Code Online (Sandbox Code Playgroud)
第二个是地址.有什么我做错了吗?我需要将结果输入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());
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*art 902
您的方法decompressGZIP()需要的对象是byte[].
因此,您提出的问题的基本技术答案是:
byte[] b = string.getBytes();
byte[] b = string.getBytes(Charset.forName("UTF-8"));
byte[] b = string.getBytes(StandardCharsets.UTF_8); // Java 7+ only
Run Code Online (Sandbox Code Playgroud)
然而,你似乎正在努力解决的问题是,这并不能很好地显示出来.调用toString()只会给你默认Object.toString()的类名+内存地址.在你的结果中[B@38ee9f13,[B手段byte[]和38ee9f13内存地址是由一个分隔的@.
出于显示目的,您可以使用:
Arrays.toString(bytes);
Run Code Online (Sandbox Code Playgroud)
但这只会显示为逗号分隔的整数序列,这可能是您想要的也可能不是.
为了得到一个可读的String从背面byte[],使用:
String string = new String(byte[] bytes, Charset charset);
Run Code Online (Sandbox Code Playgroud)
该Charset版本受青睐的原因是StringJava中的所有对象都在内部存储为UTF-16.转换为a时,byte[]您将获得给定字形的不同字节细分String,具体取决于所选的字符集.
Pra*_*ran 51
String example = "Convert Java String";
byte[] bytes = example.getBytes();
Run Code Online (Sandbox Code Playgroud)
Ank*_*hag 14
尝试使用String.getBytes().它返回表示字符串数据的byte [].例:
String data = "sample data";
byte[] byteData = data.getBytes();
Run Code Online (Sandbox Code Playgroud)
Bha*_*esh 14
只是:
String abc="abcdefghight";
byte[] b = abc.getBytes();
Run Code Online (Sandbox Code Playgroud)
你可能想尝试一下 return new String(byteout.toByteArray(Charset.forName("UTF-8")))