Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50230
  • 博文数量: 11
  • 博客积分: 85
  • 博客等级: 民兵
  • 技术积分: 163
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-08 09:59
文章分类

全部博文(11)

文章存档

2013年(8)

2012年(3)

我的朋友

分类: C/C++

2013-07-18 10:28:20


点击(此处)折叠或打开

  1. static int GB18030Cut(const unsigned char *buf, int max)
  2. {
  3.     int i = 0;
  4.     for (; i < max;)
  5.     {
  6.         if (0 == buf[i])
  7.         {
  8.             break;
  9.         }
  10.         if (buf[i] <= 0x7F)
  11.         {
  12.             ++i;
  13.             continue;
  14.         }
  15.         if ((buf[i] >= 0x81) && (buf[i] <= 0xFE)
  16.                 && (((buf[i + 1] >= 0x40) && (buf[i + 1] <= 0x7E))
  17.                     || ((buf[i + 1] >= 0x80) && (buf[i + 1] <= 0xFE))))
  18.         {
  19.             i += 2;
  20.             continue;
  21.         }
  22.         if ((buf[i] >= 0x81) && (buf[i] <= 0xFE)
  23.                 && (buf[i + 1] >= 0x30) && (buf[i + 1] <= 0x39)
  24.                 && (buf[i + 2] >= 0x81) && (buf[i + 2] <= 0xFE)
  25.                 && (buf[i + 3] >= 0x30) && (buf[i + 3] <= 0x39))
  26.         {
  27.             i += 4;
  28.             continue;
  29.         }
  30.         ++i;
  31.     }
  32.     return i;
  33. }


阅读(865) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~