今天遇到一个问题,没看懂,还请大家帮忙解答下?
函数原型: 目的是为了在一维数组中找出与字符串相对应的输出字节
//其中hz是一个字符串,如 ‘请稍后’! HZ_DOTS是一个一维数组,存放的是汉字经过取模软件后生成的16进制字节。
static unsigned char const *get_hz_dots(unsigned char *hz)
{
unsigned char const *hzp=HZ_DOTS;
short c,mn,mx;
signed char cmp;
mn=0;
mx=sizeof(HZ_DOTS)/34-1;//最大汉字数
while(1)
{
c=(mn+mx)/2;
hzp=HZ_DOTS+c*34;//从1/2长度开始
while(1)
{
if( (cmp=hzp[0]-hz[0])) ////这里不明白为什么会这样用?
break;
cmp=hzp[1]-hz[1];
break;
}
if(!cmp)
return hzp+2;
if( (c==mx) && (c==mn) )
break;
if(c==mn)
{
mn=mx;
continue;
}
if( !(cmp&0x80)) //cmp>0
{
mx=c;
}
else
{
mn=c;
}
}
return HZ_DOTS+2;
} |