A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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?

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

6 个回复

倒序浏览
buf【i】<0  这是汉字的前半个字节的ASC是小于0的所以只要buf[i]<0默认为这是汉字只读取了一半
回复 使用道具 举报
为什么汉字的前半个字节的ASC小于0,汉字的ASC是什么格式的
回复 使用道具 举报

这个知识点在毕老师的哪节课讲过,我没印象了,你能告诉我吗,我再去看看
回复 使用道具 举报
学系一下
回复 使用道具 举报
ASCII码表中一个汉字是用两个负数来表示的,所以当buf[i]<0时就是一个负数,也就是表示半个汉字
回复 使用道具 举报
不说这方法用来干嘛的
所以这问题没意义
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马