CString ss="0x6689,0x4aa1,0x4852";以“,”分隔,
怎么样转啊?

解决方案 »

  1.   

    先分割然后用strtol
    char * s = "0xa";
    int l = strtol(s,0,16);再转为二进制的字符串:
    char sz[100];
    itoa(l,sz,2);
    printf("%s",sz);
      

  2.   

    什么编码?只是帮你转化为二进制的 CString s="0x6689,0x4aa1,0x4852";
    char sz[10]={0};
    int nState = 0;
    int nIndex = -1;
    for(int i=0;i<s.GetLength();++i)
    {
    switch(s[i])
    {
    case '0':
    nState = 1;
    break;
    case 'x':
    if(nState == 1)
    nState = 2;
    else
    nState = 0;
    break;
    default:
    if(!((s[i]>='a'&&s[i]<='z')
    ||(s[i]>='A'&&s[i]<='Z')
    ||(s[i]>='0'&&s[i]<='9')))
    break;
    if(nState==2)
    {
    int nStart=(++nIndex)/2;
    sz[nStart]<<=4;
    if(s[i]>='a')
    sz[nStart]|=s[i]-'a'+10;
    else if(s[i]>='A')
    sz[nStart]|=s[i]-'A'+10;
    else
    sz[nStart]|=s[i]-'0';
    }
    }
    }
    MessageBox(sz);
      

  3.   

    先用find找到‘,’把字符串分离出来,用数组保存,然后直接格式化一下,sscanf
      

  4.   

    phoenix96_2000的思路,不过不一定快,:p
    CString ss="0x6689,0x4aa1,0x4852";
    int iIndex = 0;
    CString sf;
    while(AfxExtractSubString(sf, ss, iIndex++, ',')) 
    {
    int l = strtol(sf,0,16);
    //MessageBox(sf);
    }