黑马程序员技术交流社区

标题: 二进制字符表示 [打印本页]

作者: 荣英洁    时间: 2014-9-25 00:09
标题: 二进制字符表示
本帖最后由 荣英洁 于 2014-9-25 00:11 编辑

在java中  char 与 int 可以相互转换,而且包括了ASCII 字符,中文字符也可以。我现在遇到的问题:一个中文字符由两个字节表示,两个字节要怎么转化才能得到 int 的值。比如: “哈”的两个字节是 -71 ,-2  ; 而 通过  a=(int)'哈' ; 那么得到的a值是  21704  。请问两个字节数据  -72,-2  是怎么通过转得到int 型的  21704 。
作者: yueyazhishang    时间: 2014-9-25 09:59
  1. @Test
  2.         public void testByte()
  3.         {
  4.                 String s="哈";
  5.                 byte b[]=s.getBytes();
  6.                 System.out.print("将汉字按照字节的形式输出:");
  7.                 System.out.println(b[0]+":"+b[1]);
  8.                 System.out.print("将汉字按照二进制形式输出(高字节):");
  9.                 System.out.println(Integer.toBinaryString(b[0]));
  10.                 System.out.print("将汉字按照二进制形式输出(底字节):");
  11.                 System.out.println(Integer.toBinaryString(b[1]));
  12.                 System.out.print("将汉字按二进制形式输出:");
  13.                 String s1=Integer.toBinaryString(b[0])+Integer.toBinaryString(b[1]);
  14.                 System.out.println(s1);
  15.                 //将汉字按照int型输出
  16.                 BigInteger nb=new BigInteger(s1);
  17.                 System.out.println("将汉字按照int型输出:");
  18.                 System.out.println(nb.intValue());
  19.        
  20.                
  21.         }
复制代码

我不知道这样回答你对不对。
作者: 荣英洁    时间: 2014-9-25 21:02
yueyazhishang 发表于 2014-9-25 09:59
我不知道这样回答你对不对。

我是想要知道,如何用字节表示中文字符的底层机制
作者: 如此煽情〃    时间: 2014-9-25 21:15
阿斯卡玛表   大五码表   这一类的   貌似有对应的表格
作者: yueyazhishang    时间: 2014-9-29 21:57
荣英洁 发表于 2014-9-25 21:02
我是想要知道,如何用字节表示中文字符的底层机制

你提出的这个问题很好,纠结了好几天,突然发现我理解错了。我分享的代码是将字符串转化为byte数组,然后将byte转化为int。而你提问的问题是char与int的转化。先将修正好的代码分享,希望对你有帮助。
  1. public void testByte2()
  2.         {
  3.                 //提示,这种形式在jdk1.7可以使用
  4.                 int a=0b101010011001000;
  5.                 int b='哈';//将byte类型的'哈'转化为int。自动向上转型
  6.                
  7.                 System.out.println((char)a);//将二进制的101010011001000也就是十进制的21704转化为byte。
  8.                 System.out.println(b);//输出byte转化为int的值
  9.         }
复制代码




作者: 荣英洁    时间: 2014-10-10 17:30
yueyazhishang 发表于 2014-9-29 21:57
你提出的这个问题很好,纠结了好几天,突然发现我理解错了。我分享的代码是将字符串转化为byte数组,然后 ...

虽然知道了二进制编码,现在还不知道两个字节怎么转换的!还有跟字符也有关系,还在纠结当中





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2