CString CView::Bin2Hex(CString a)
{
if(a=="0000")
return "0";
else
if(a=="0001")
return "1";
else
if(a=="0010")
return "2";
else
if(a=="0011")
return "3";
else
if(a=="0100")
return "4";
else
if(a=="0101")
return "5";
else
if(a=="0110")
return "6";
else
if(a=="0111")
return "7";
else
if(a=="1000")
return "8";
else
if(a=="1001")
return "9";
else
if(a=="1010")
return "A";
else
if(a=="1011")
return "B";
else
if(a=="1100")
return "C";
else
if(a=="1101")
return "D";
else
if(a=="1110")
return "E";
else
if(a=="1111")
return "F";
else
return "0";}CString形式的二进制数转CString的十六进制

解决方案 »

  1.   

    晕, 真烂。CString strTemp = _T("0011");  //你的二进制字符串
    int nTemp = _tcstol(strTemp, NULL, 2);
    strTemp.Format(_T("%X"), nTemp);
      

  2.   

    对的,先将CString转成整型,然后在Format为十六进制形式
      

  3.   

    不错
    再帮忙看看,十六进制转二进制吧
    http://topic.csdn.net/u/20101124/15/224a97bf-1989-4ee0-8fe0-670fa6ddc32b.html
      

  4.   

    来个跨平台的。
    static void *BinToHex(const void *bin, size_t size, void *outbuf)
    {
    if (bin == NULL || outbuf == NULL)
    {
    return NULL;
    } static char tab[] = "0123456789ABCDEF";
    unsigned char *src = (unsigned char *)bin;
    unsigned char *dst = (unsigned char *)outbuf;
    while (size-- > 0)
    {
    *dst++ = tab[*src >> 4];
    *dst++ = tab[*src & 0xF];
    ++src;
    } return outbuf;
    }