如题

解决方案 »

  1.   

    采用双字节表示,有很多种方法
    其中一种简单的方法就是用两个字节,每个字节分别存储原字节的高四位和低四位
    这样实际上每个字节只用到了 0~15BYTE byNew[2];
    BYTE byOld = 0xFF;byNew[0] = byOld >> 4;
    byNew[1] = byOld & 0xFF;
      

  2.   

    不可以呀如你所说BYTE byNew[2];
    BYTE byOld = 0xFF;byNew[0] = byOld >> 4;  --〉为 15
    byNew[1] = byOld & 0xFF;--〉为 255
      

  3.   

    byNew[1] = byOld & 0xF;
      

  4.   

    8位->6位. 这个也是 BASE64 编码方法:每三个字节编码成4个字节// 进行Base64编码
    static BYTE Table(BYTE ot)
    {
        if(ot>=0 && ot<=25)return 'A' + ot;
    else if(ot>=26 && ot<=51)return 'a' + (ot-26);
    else if(ot>=52 && ot<=61)return '0' + (ot-52);
    else if(ot==62)return '+';
    else if(ot==63)return '/';
    else return '=';
    }void Base64(const char* pSrc, char* pszCode)
    {
        BYTE ot;
    int i;
    i=0;
    while(pSrc[i])
    {
    ot = (0xFC & pSrc[i])>>2; *pszCode = Table(ot); i++; pszCode++;
    if(!pSrc[i])
    {
    ot = (0x03 & pSrc[i-1])<<4; *pszCode = Table(ot); pszCode++;
    break;
    }
    ot = (0x03 & pSrc[i-1])<<4 | (0xF0 & pSrc[i])>>4; *pszCode = Table(ot); pszCode++; i++;
    if(!pSrc[i])
    {
    ot = (0x0F & pSrc[i-1])<<2; *pszCode = Table(ot); pszCode++;
    break;
    }
    ot = (0x0F & pSrc[i-1])<<2 | (0xC0 & pSrc[i])>>6; *pszCode = Table(ot); pszCode++;
    ot = 0x3F & pSrc[i]; *pszCode = Table(ot), i++; pszCode++;
    }
    *pszCode = NULL;
    }