VC函数转化为VB能用的函数
int UCS2ToGB(LPBYTE lpUCSBuf,int nByteCount,LPSTR lpGBBuf,int nGBCount)
{
int i,nResult;
LPWSTR lpNewUCSBuf = new unsigned short[nByteCount/2];
LPBYTE lpUCSBuf1 = new unsigned char[nByteCount];
for(i=0;i<nByteCount;i++)
{
if(i%2==0)
{
lpUCSBuf1[i]=*(lpUCSBuf+i+1);
}
else
{
lpUCSBuf1[i]=*(lpUCSBuf+i-1);
}
}
for(i=0;i<nByteCount/2;i++)
{
* (lpNewUCSBuf +i) = * (lpUCSBuf1 +2*i);
* (lpNewUCSBuf +i) <<= 8;
* (lpNewUCSBuf +i) += * (lpUCSBuf1 +2*i+1);
}
nResult = WideCharToMultiByte(CP_ACP,
WC_COMPOSITECHECK,
lpNewUCSBuf,
nByteCount/2,
lpGBBuf,
nGBCount,
NULL,
NULL
);
delete [] lpNewUCSBuf;
delete [] lpUCSBuf1;
return nResult;
}int GBToUCS2(LPCSTR lpGBBuf,int nGBCount,LPWSTR lpUCSBuf,int nUCSCount)
{
return MultiByteToWideChar(CP_ACP, // code page
MB_PRECOMPOSED, // character-type options
lpGBBuf, // string to map
nGBCount, // number of bytes in string
lpUCSBuf, // wide-character buffer
nUCSCount // size of buffer
);
}
int UCS2ToGB(LPBYTE lpUCSBuf,int nByteCount,LPSTR lpGBBuf,int nGBCount)
{
int i,nResult;
LPWSTR lpNewUCSBuf = new unsigned short[nByteCount/2];
LPBYTE lpUCSBuf1 = new unsigned char[nByteCount];
for(i=0;i<nByteCount;i++)
{
if(i%2==0)
{
lpUCSBuf1[i]=*(lpUCSBuf+i+1);
}
else
{
lpUCSBuf1[i]=*(lpUCSBuf+i-1);
}
}
for(i=0;i<nByteCount/2;i++)
{
* (lpNewUCSBuf +i) = * (lpUCSBuf1 +2*i);
* (lpNewUCSBuf +i) <<= 8;
* (lpNewUCSBuf +i) += * (lpUCSBuf1 +2*i+1);
}
nResult = WideCharToMultiByte(CP_ACP,
WC_COMPOSITECHECK,
lpNewUCSBuf,
nByteCount/2,
lpGBBuf,
nGBCount,
NULL,
NULL
);
delete [] lpNewUCSBuf;
delete [] lpUCSBuf1;
return nResult;
}int GBToUCS2(LPCSTR lpGBBuf,int nGBCount,LPWSTR lpUCSBuf,int nUCSCount)
{
return MultiByteToWideChar(CP_ACP, // code page
MB_PRECOMPOSED, // character-type options
lpGBBuf, // string to map
nGBCount, // number of bytes in string
lpUCSBuf, // wide-character buffer
nUCSCount // size of buffer
);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货