java 字符串和数组的之间的转换

来源:互联网 发布:管家婆数据怎么备份 编辑:程序博客网 时间:2024/05/18 15:29
1、如果是有分隔符的那种例如"a,b,c";就直接分割String string = "a,b,c";String [] stringArr= string.split(",");  //注意分隔符是需要转译2、如果是"abc"这种字符串,就直接String string = "abc" ;char [] stringArr = string.toCharArray(); //注意返回值是char数组3、如果要返回byte数组就直接使用getBytesString string = "abc" ;byte [] stringArr = string.getBytes();

1、字节数组转换为字符串

byte[] byBuffer = new byte[20];... ...String strRead = new String(byBuffer);strRead = String.copyValueOf(strRead.toCharArray(), 0, byBuffer.length]);

2、字符串转换成字节数组

byte[] byBuffer = new byte[200];String strInput="abcdefg";byBuffer= strInput.getBytes();

注意:如果字符串里面含有中文,要特别注意,在android系统下,默认是UTF8编码,一个中文字符相当于3个字节,只有gb2312下一个中文相当于2字节。这种情况下可采取以下办法:

byte[] byBuffer = new byte[200];String strInput="我是字符串";byBuffer= strInput.getBytes("gb2312");

getBytes()是将一个字符串转化为一个字节数组。String的getBytes()方法是得到一个系统默认的编码格式的字节数组。将一个string类型的字符串转换成byte类型并且存入一个byte数组中。在java中的所有数据底层都是字节,字节数据可以存入到byte数组。存储字符数据时(字符串就是字符数据),会先进行查表,然后将查询的结果写入设备,读取时也是先查表,把查到的内容打印到显示设备上,getBytes()是使用默认的字符集进行转换,getBytes(“utf-8”)是使用UTF-8编码表进行转换。  用法如下:
string s="dddddddddd";
char t[]=new char[1000];
string m=new string(s.getbyte(t));
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这个表示在不通Operation System下,返回的东西不一样!

String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如:byte[] b_gbk = "中".getBytes("GBK");byte[] b_utf8 = "中".getBytes("UTF-8");byte[] b_iso88591 = "中".getBytes("ISO8859-1");将分别返回"中"这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1.

而与getBytes相对的,可以通过new String(byte[], decode)的方式来还原这个"中"字时,这个new String(byte[], decode)实际是使用decode指定的编码来将byte[]解析成字符串.String s_gbk = new String(b_gbk,"GBK");String s_utf8 = new String(b_utf8,"UTF-8");String s_iso88591 = new String(b_iso88591,"ISO8859-1");通过打印s_gbk、s_utf8和s_iso88591,会发现s_gbk和s_utf8都是"中",而只有s_iso88591是一个不认识的字符,为什么使用ISO8859-1编码再组合之后,无法还原"中"字呢,其实原因很简单,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1");来得到正确的"中"字在ISO8859-1中的编码值了,所以再通过new String()来还原就无从谈起了.因此,通过String.getBytes(String decode)方法来得到byte[]时,一定要确定decode的编码表中确实存在String表示的码值,这样得到的byte[]数组才能正确被还原.

有时候,为了让中文字符适应某些特殊要求(如http header头要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况,如:String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1"),这样得到的s_iso8859-1字符串实际是三个在ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")来得到正确的中文汉字"中".这样就既保证了遵守协议规定、也支持中文.

	
				
		
原创粉丝点击