关于汉字区位内码的问题
from "freepy"中的 "gb2big"
static unsigned char GtoB[] = {
0xa1,0x40, 0xa1,0x42, 0xa1,0x43, 0xa1,0x4f, 0xa1,0xc2, 0xa1,0xbc, 0xa1,0x4c,
0xa1,0xb2, 0xa1,0xbc, 0xa2,0x77, 0xa1,0xe3, 0xa1,0xfc, 0xa1,0x4b, 0xa1,0xa5,
0xa1,0xa6, 0xa1,0xa7, 0xa1,0xa8, 0xa1,0x65, 0xa1,0x66, 0xa1,0x71, 0xa1,0x72,
0xa1,0x6d, 0xa1,0x6e, 0xa1,0x75, 0xa1,0x76, 0xa1,0x79, 0xa1,0x7a, 0xa1,0xbc,
0xa1,0xbc, 0xa1,0x69, 0xa1,0x6a, 0xa1,0xd3, 0xa1,0xd1, 0xa1,0xd2, 0xa1,0x4a,
0xa3,0x4e, 0xa1,0xbc, 0xa3,0x55, 0xa3,0x53, 0xa1,0xe5, 0xa1,0xe4, 0xa1,0xbc,
... ...
};
#define GtoB_bad1 0xa1
#define GtoB_bad2 0xbc
int gb2big(char *pszBuf)
{
unsigned char c1,c2;
int i,nLen,nPos;
char *pstr;
pstr=pszBuf;
nLen=strlen(pstr);
i=0;
while (i<nLen ) {
if (!IsDBCSLeadByte((BYTE)*pstr)) {
pstr++;
i++;
continue;
}
c1=*pstr;
c2=*(pstr+1);
if ((c2 >= 0xa1) && (c2 <= 0xfe)) {
if ((c1 >= 0xa1) && (c1 <= 0xa9)) {
nPos = ((c1 - 0xa1) * 94 + (c2 - 0xa1)) * 2;
*pstr = GtoB[nPos++];
*(pstr+1) = GtoB[nPos];
}
else if ((c1 >= 0xb0) && (c1 <= 0xf7)) {
nPos = ((c1 - 0xb0 + 9) * 94 + (c2 - 0xa1)) * 2;
*pstr = GtoB[nPos++];
*(pstr+1) = GtoB[nPos];
}
else {
*pstr = (char)GtoB_bad1;
*(pstr+1) = (char)GtoB_bad2;
}
}
else {
*pstr = (char)GtoB_bad1;
*(pstr+1) = (char)GtoB_bad2;
}
pstr += 2;
i += 2;
}
return 1;
}
那个数组怎么理解啊?