class Char
{
public static void main(String[] args)
{
//Character ch = 'A';
Integer in = (int)'A';

System.out.println(Integer.toBinaryString(in));
}
}
/*
2008年8月30日16:12:58
在网上查到资料如下:
------------------------------------------------
Unicode的特点是: 
不管哪一国的字符码均以两个Byte表示,例如"A"在Unicode则是16进制 41和00的组合,
即4100,高位41(转换为Ascii码即是65=A),Windows NT/2000以Unicode来表示字
符集,例如你可以看到MS SQL Server中产生的SQL文件可以选择是以Unicode来保存
还是以普通格式来保存,如果你以Unicode保存,则在95/98平台许多软件均无法正确
读出其格式。 
------------------------------------------------
请问我如何编程来求出字符‘A’的Unicode码的二进制代码,
还有上面程序为什么 在JDK 1.6中的运行结果是:
---------------------
1000001
---------------------
照上面资料的意思,输出结果应该是: 1000001 0000 0000 啊*/

解决方案 »

  1.   

    是不是bigIndian和littleEndian的问题。
      

  2.   

    居然编译通过了??
    char是以8位Ascii的形式存在的..
    所以你转了之后只会有8位
      

  3.   

    "toBinaryString()"不知道楼主有没有看过javaAPI的文档,文档中说"将该值转换为二进制形式无前导0的ascii数字字符串"也就是说应该得出的答案是"0100 0001",API把前导的0去掉了就成了"1000001"注意:是ascii编码(单字节),不是unicode~
      

  4.   

    是Integer.toBinaryString(in)的问题,不需要转化,(int)'A'的结果就是正确的
      

  5.   

    //新曙光培训@西安
    //www.xinshuguang.org
    import java.util.*;
    public class HanZi{
    public static void main(String[] args)
    {
    char c='新';
    int i=c;
    System.out.println(Integer.toHexString(i));
    for(i=0;i<5;i++){
    c=(char)(c+i);
    System.out.print(" "+c);
    }
    }
    }
      

  6.   

    这样转换才保险
    public class Main { public static void main(String[] args) {
    try{
    String s = "A";
    byte[] arr = s.getBytes("unicode");
    for(int i=2; i<arr.length; i++){
    System.out.print(format(Integer.toBinaryString(arr[i]&255)));
    System.out.print(" ");
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    }

    public static String format(String org) {
    StringBuffer sb = new StringBuffer();
    sb.append(org);
    for (int i = 0; i < 8 - org.length(); i++) {
    sb.insert(0, '0');
    }
    return sb.toString();
    }}