黑马程序员技术交流社区

标题: 一段代码中的一句没看明白,求解答 [打印本页]

作者: youtianlong123    时间: 2014-11-8 19:15
标题: 一段代码中的一句没看明白,求解答
  1. public static int  trimGBK(byte[] buf,int n){
  2.                 int num = 0;
  3.                 boolean bChineseFirstHalf = false;
  4.                 for(int i=0;i<n;i++)
  5.                 {
  6.                         if(buf[i]<0 && !bChineseFirstHalf){
  7.                                 bChineseFirstHalf = true;
  8.                         }else{
  9.                                 num++;
  10.                                 bChineseFirstHalf = false;                               
  11.                         }
  12.                 }
  13.                 return num;
复制代码

上面代码的第六行,If语句中的buf<0,为什么做出这样的判断,在什么情况下一个字节才能小于0?
作者: 默默丶    时间: 2014-11-8 19:23
buf【i】<0  这是汉字的前半个字节的ASC是小于0的所以只要buf[i]<0默认为这是汉字只读取了一半
作者: baoting_1990    时间: 2014-11-8 19:46
为什么汉字的前半个字节的ASC小于0,汉字的ASC是什么格式的
作者: youtianlong123    时间: 2014-11-8 20:15
默默丶 发表于 2014-11-8 19:23
buf【i】

这个知识点在毕老师的哪节课讲过,我没印象了,你能告诉我吗,我再去看看
作者: 奋斗的蜗牛ksd    时间: 2014-11-9 00:14
学系一下
作者: hailong    时间: 2014-11-9 00:46
ASCII码表中一个汉字是用两个负数来表示的,所以当buf[i]<0时就是一个负数,也就是表示半个汉字
作者: cs8630323    时间: 2014-11-9 02:27
不说这方法用来干嘛的
所以这问题没意义




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