import java.io.*;
public class t3{
public static void main(String[] args){
StringBuffer sb=new StringBuffer();
for(int i=19968;i<40869;i++) //\u4e00-\u9fa5
sb.append((char)i);
try{
File f=new File("c:\\uu.txt");
FileWriter fr=new FileWriter(f);
fr.write(sb.toString());
fr.close();
}catch(Exception e){}
}
}
这个打出了所有汉字,不合要求。2,十六进怎么转为十进?

解决方案 »

  1.   

    计算FF得到255,正解,计算4E00本该得到19968,但得到了217392,不知为何故?import java.io.*;
    public class t3{
    public static void main(String[] args){String hex="4E00";
    int len=hex.length();
    System.out.println(len);
    int dec=0;
    int tmp=0;
    char c='\0';
    for(int i=0;i<len;i++){
    c=hex.charAt(i);
    System.out.println(c);
    if(c>='A')
    tmp=(int)c-55;
    else 
    tmp=c;
    System.out.println(c);dec+=tmp*Math.pow(16,(len-i-1));
    }
    System.out.println(dec);}
    }
      

  2.   

    // 仅供参考
    import java.io.*;
    public class t3{
    public static void main(String[] args){
    StringBuffer sb=new StringBuffer();
    for(int i=19968;i<40869;i++) //\u4e00-\u9fa5
    sb.append((char)i);
    try{
    File f=new File("c:\\uu.txt");
    FileWriter fr=new FileWriter(f);
    fr.write(new String(sb.toString().getBytes("GB2312"))); 
    fr.close();
    }catch(Exception e){}
    }
    }
      

  3.   

    import java.io.*;
    public class t3{
    public static void main(String[] args){

    String hex="4E00";
    int len=hex.length();
    System.out.println(len);
    int dec=0;
    int tmp=0;
    char c='\0';

    for(int i=0;i<len;i++){
    c=hex.charAt(i);
    System.out.println("c: "+c);
    if(c>='A' && c <='F'){
    tmp=(int)c-55;
    System.out.println("tmp: "+tmp);
    }
    else {
    tmp=c - '0';  // 1
    System.out.println("tmp: "+tmp);
    }
            
    dec = dec*16 + tmp;
    }

    System.out.println(dec);     
    }
    }
      

  4.   

    运行如下:
    F:\>javac t3.javaF:\>java t3
    4
    c: 4
    tmp: 4
    c: E
    tmp: 14
    c: 0
    tmp: 0
    c: 0
    tmp: 0
    19968
      

  5.   

    从十六进转为十进,java中没有定义好了的api吗?