GB18030Cut

原创
2019/10/23 12:01
阅读数 40
int GB18030Cut(const unsigned char *buf, int max)
{
    int i = 0;
    for (; i < max;)
    {
        if (0 == buf[i])
        {
            break;
        }
        if (buf[i] <= 0x7F)
        {
            ++i;
            continue;
        }
        if ((buf[i] >= 0x81) && (buf[i] <= 0xFE)
                && (((buf[i + 1] >= 0x40) && (buf[i + 1] <= 0x7E))
                    || ((buf[i + 1] >= 0x80) && (buf[i + 1] <= 0xFE))))
        {
            i += 2;
            continue;
        }
        if ((buf[i] >= 0x81) && (buf[i] <= 0xFE)
                && (buf[i + 1] >= 0x30) && (buf[i + 1] <= 0x39)
                && (buf[i + 2] >= 0x81) && (buf[i + 2] <= 0xFE)
                && (buf[i + 3] >= 0x30) && (buf[i + 3] <= 0x39))
        {
            i += 4;
            continue;
        }
        ++i;
    }
    return i;
}

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部