string怎么转化为byte
String s = "fs123fdsa";//String变量
byte b[] = s.getBytes();//String转换为byte[]
String t = new String(b);//bytep[]转换为String
“字符”是由数字来表示的
先来重新了解一下计算机是如何处理“字符”的,这个原理是必须记住的,特别是在用JAVA写程序的时候,万万不可模糊。计算机把任何东西都用数字来表示,“字符”也不例外。比如要显示一个阿拉伯数字“3”,在pc里,其实并不是仅仅用一个数字3来代表我们要写的“3”,而是以十六进制的0x33来代表,包括放在内存或者是写到文件里,其实都是写着0x33的,不信可以编辑一个文本文件,写一个“3”,然后用ultraEdit看他的原始码。
一切“字符”都必定用数字+编码表表示。
这时候,有一个问题:为什么一定要用0x33来代表“3”呢?而不用0x43来代表呢?或者是直接用0x03来代替?其实用什么来代表都可以,只不过大家都习惯了用ASCII编码表(是美国国家信息交换表)来确定各字符应该是用什么数字代表的。同样,为了表示中国字,我国也指定了中文的编码表,其中最广泛使用的是GB2312。比如中文的“当”字,就是用0xB5,
0xB1这两个八位的数字来表示的。所以如果显示字符的程序不知道一列数字到底是按什么编码表编码的,他也无法去判断到底这些是什么文字。如果随便用一个不对的编码表来处理这些数字,处理出来的字符很可能完全是错的。比如在英文系统上,没有GB2312编码表,送一个0xB5,0xB1,就傻傻的当作ASCII来处理(操作系统通常都有自己默认的编码表),结果显示出来就是两个奇怪的符号,因为这两个字在ASCII表里就是那两个符号。同样在繁体中文系统里,编码表是BIG5,显示出来也是一个奇怪的中文,不是“当”字。
string 转 byte[]的方法:
byte[] midbytes=isoString.getBytes("UTF8");
//为UTF8编码
byte[] isoret = srt2.getBytes("ISO-8859-1");
//为ISO-8859-1编码
其中ISO-8859-1为单字节的编码
byte[]转string的方法:
String isoString = new String(bytes,"ISO-8859-1");
String srt2=new String(midbytes,"UTF-8");
(PS:在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的数据转换为中间件的类型。将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。)
String testStr = "我是中国人";
byte b[] = testStr .getBytes();//String转换为byte[]
就这样就可以完成!
{
public static void main(String[] args)
{
String response = "java";
String str[] = response.split("");
for(int i = 1;i<=response.length();i++){
System.out.print(str[i]+" ");
}
}
}
public static void main(String[] args){
String response = new String(args[0]);
byte[] bytes = new byte[];
byte[] bytes = response.getBytes();
for(byte b : bytes)
System.out.print(b);
}
}