如果判断一个字符是全角输入的还是半角输入的?
如何把全角字符转换成半角字符

解决方案 »

  1.   

    //全角转半角
    BOOL CLYServer3Dlg::All2Half(const BYTE *pBuf,int in_size,BYTE *pOut,int *out_size)   
    {   
    if(!pBuf)   
    {   
    return FALSE;   
    }   
    if(!pOut)   
    {   
    return FALSE;   
    }   
        
    if(*out_size < (in_size/2 + 1))   
    {   
    *out_size = in_size/2 + 1;   
    return FALSE;   
    }   
        
    BYTE *pBt1 = new BYTE[in_size + 1];   
    memset(pBt1 , 0 , in_size+1);   
    memcpy(pBt1 , pBuf , in_size);   
        
    BYTE *pBt2 = pOut;   
    for(int i = 0 ; i < in_size ; i++)   
    {   
    if(*pBt1 == 0x00)   
    {   
    *pBt2++ = *pBt1++;   
    }   
    else if(*pBt1 == 0xa3)   
    {   
    pBt1++;   
    *pBt2++ = *pBt1++ - 0x80;   
    }   
    else   
    {   
    *pBt2++ = *pBt1++;   
    }   
    }   
    return   TRUE;   
    }
      

  2.   

    谢谢!楼上的朋友!
    不过,我不太明白
    if(*pBt1 == 0xa3)
    {   
       pBt1++;   
       *pBt2++ = *pBt1++ - 0x80;   
    }
    是什么意思?能说一下吗?