单字节与多字节转换

 //---------------内部空间使用变量-----------------------------
 WCHAR IcommonWChs[255];
 char IcommonChs[255];
 //------------------------------------------------------------
 /*
 unicode是一种编码方式,它是没有变种的,只是在存储方式上有不同,
 比如utf-8就是一种存储方式,区分这些存储方式由文本保存时一并保存的信息决定.
 而存储unicode编码根据高位在前还是低位在前也有两种方式,
 区别这两种方式的方法是在文本开头写入两个额外字节FF FE表示高位在前,
 FE FF表示低位在前.
 //ASCI编码(也被称为多字节编码)中汉字占用2字节,与占用1字节的英文字符区别是其最高位为1,而单字节的英文字符最高位为0
 //Unicode中每一个文字占两字节,对于英文字符来说,其第二个字节为0,第一个字节为ASCII码值
 */
 LPWSTR c2wc(char* const csp)
 {//ASCI编码转到Unicode编码
    //int size= MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,csp,strlen(csp),NULL,0);
   int size=1+strlen(csp);//@20210717 must add one nor it will not has the end flag.
   //WCHAR*wCp=new WCHAR[size];
   //MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,csp,-1,wCp,size);
   //
   MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,csp,-1,IcommonWChs,size);


   //MultiByteToWideChar( CP_UTF8, 0, cCommandLine, /*sizeof(pszTemp)*/ -1, pszMultiByteString, MAX_PATH );
   //memset(IcommonWChs,0,sizeof(WCHAR)*255);
   //wcscpy(IcommonWChs,wCp);
   //IcommonWChs[size]=0;
   /*
   for(int i=0;IcommonWChs[i];i++)
   {
       if(IcommonWChs[i]==43947)
       {
           IcommonWChs[i]=0;
           break;
       }
   }*/
   //delete [] wCp;
   return IcommonWChs;
 }
 //只适用于纯英文格式
 LPWSTR c2wc_t(char* const csp)
 {
    int i=0,j=0;
    for(i=0;csp[i];i++)
    {
        IcommonChs[j]=csp[i];j++;
        if(csp[i]&0x80)//如果该字节的最高位为1则代表中文,ASCI中用2个字节表示
        {
            return NULL;
        }
        else
        {
           IcommonChs[j]=0;j++;
        }

    }
    IcommonChs[j]=0;j++;
    IcommonChs[j]=0;j++;
    return (LPWSTR)IcommonChs;

 }
 char* cw2c(LPWSTR const cwsp)
 {
     int i,j;
     char *p=(char*)cwsp;
     for(i=0,j=0;p[i];i+=2,j++)
     {
       IcommonChs[j]=p[i];
       if(p[i+1]!=0)
       {//遇到中文则操作失败,返回NULL
         return NULL;
       }
     }
     IcommonChs[j]=0;
     return IcommonChs;
 }

    原文作者:时光-易逝
    原文地址: https://blog.csdn.net/u011329967/article/details/109891824
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞