如何将Javastring转换为byte ?

有什么办法将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()); 

我得到单独的输出。 无法显示第一个输出,因为它是一个gzipstring。

 <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); 

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

要从byte[]获得可读的String ,请使用:

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

Charset版本更受青睐的原因是Java中的所有String对象都以UTF-16的forms存储在内部。 当转换为byte[] ,根据所选的字符集,您将得到该String给定字形的不同字节分解。

  String example = "Convert Java String"; byte[] bytes = example.getBytes(); 

尝试使用String.getBytes()。 它返回一个表示string数据的byte []。 例:

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

只是:

 String abc="abcdefghight"; byte[] b = abc.getBytes(); 

你可以使用返回byte[]数组的String.getBytes()

你可能想尝试return new String(byteout.toByteArray(Charset.forName("UTF-8")))

 import java.io.UnsupportedEncodingException; import java.util.Arrays; public class ConvertStringtoByte { public static void main(String[] args) throws UnsupportedEncodingException { String givenString = "stackoverflow"; System.out.println(givenString ); byte[] byteValue = givenString .getBytes(); System.out.println(Arrays.toString(byteValue )); byte[] byteValueAscii= letters.getBytes("US-ASCII"); System.out.println(Arrays.toString(byteValueAscii)); } } 

不需要将Java作为String参数进行更改。 您必须更改c代码来接收没有指针的string,并在其代码中:

 Bool DmgrGetVersion (String szVersion); Char NewszVersion [200]; Strcpy (NewszVersion, szVersion.t_str ()); .t_str () applies to builder c ++ 2010