如何将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