char中存若为中文,是2个字节,若为字母等,又是1个字节,byte是1个字节的,也就是说,直接将char[] 转换为 byte[],在byte的长度定义上肯定是会有问题的。
所以,我们可以通过String对象中转转换,比如如下:
char[] ch = {'中','a'};
String str = String.valueOf(ch,0,ch.length);
byte[] alpha = str.getBytes();
System.out.println(str);
System.out.println(alpha.length);
所以,我们可以通过String对象中转转换,比如如下:
char[] ch = {'中','a'};
String str = String.valueOf(ch,0,ch.length);
byte[] alpha = str.getBytes();
System.out.println(str);
System.out.println(alpha.length);
解决方案 »
- 请问java中连接数据库(如Access、MySQL),能否在数据库中设置不属于java基本类型的日期型等类型?
- java关于如何添加滚动条的问题
- 求一道简单的java输入输出题目
- 有没有rt.jar包的源码,sun有没有开源
- 新手学习J2EE,请各位推荐学习java的资料?????????????????
- 客户端没装jdk显示不了applet怎么办?请高手指点!进!!!挺着急的!!!
- 新手求教
- j2SE B/S结构 数据库的并发新手问题
- 高手帮忙!关于SOCKET问题
- 调查--- 大家都在用JAVA做什么????
- 如何在JAVA中读取EXCEL文件?谢谢。
- 哪位大哥大姐帮帮忙(提供线索给分)
综合如下:
public class Test{
public static void main(String[] args) {
try {
//从char[]到byte[]
char[] ch = {'中','a'};
String str = String.valueOf(ch,0,ch.length);
byte[] alpha = str.getBytes();
System.out.println(str);
System.out.println(alpha.length); //从byte[]到char[]
String str2 = new String(alpha);
char[] ch2 = new char[str2.length()];
System.out.println(str2);
for(int i=0;i<str2.length();i++) {
ch2[i] = str2.charAt(i);
System.out.println(ch2[i]);
}
}
catch(Exception es) {
es.printStackTrace();
}
}
}