请教一下大家,问题可能有点幼稚,我想把一个CString字符串的字符(这是返回值)转换为无符号8位字节数组,我要用里面的数据绘图,请教一下怎么转换呢,先谢谢回答问题的人了。

解决方案 »

  1.   


    void String2Hex(const CString &Str, UCHAR *Buf, ULONG &Len)
    {
    UCHAR OneData = 0;
    Len = 0;
    int ChL = 0;
    for (int i = 0; i < Str.GetLength(); i++)
    {
    char C = static_cast<char>(Str.GetAt(i));
    if (C == ' ' || C == ':' || C == '-')  
    {
    if (ChL != 0)
    {
    Buf[Len++] = OneData;
    ChL = 0;
    }
    continue;
    }

    OneData <<= 4;
    OneData += Char2Hex(C);
    ChL++;
    if (ChL == 2)
    {
    Buf[Len++] = OneData;
    ChL = 0;
    }
    }
    }
      

  2.   

    CString的GetAt()
    然后调用strtol();具体:
    CString strTemp = _T("1234");
    byte byTemp = (byte)strtol(strTemp.GetAt(i));这个意思是你每位都是你要分离的。不知道和你想要的对不?
      

  3.   

    2楼的朋友:
    strtol的参数不是一个吧?呵呵
    比如我的字符串是
    CString str="DBBBBA@@@?????"    ----(十六进制)
    我要把她转换为无符号8位字节数组
      

  4.   

    2楼的思路是对的,用atoi也可以,具体的楼主自己考虑用什么函数了
      

  5.   


    strtol(strTemp.GetAt(i), NULL, 16)
      

  6.   

    short Str2Hex(const char* szData, char* szOut, int nOutMaxLen)
    {
    if ((szOut == NULL) || (szData == NULL))
    {
    return -1;
    }
    memset(szOut, 0, nOutMaxLen);
    int nLen = strlen(szData);
    char szTemp[20];
    int nCount = 0;
    int i;
    for (i = 0; i < nLen; i += 2)
    {
    if (nCount >= nOutMaxLen)
    {
    return -2;
    }
    memset(szTemp, 0, sizeof(szTemp));
    szTemp[0] = szData[i];
    szTemp[1] = szData[i+1];
    szOut[i/2] = (unsigned char)strtol(szTemp, NULL, 16);
    nCount++;
    }
    return 0;
    }
      

  7.   

    楼上的朋友,还是不对,GetAt得到的是具体的字符,而strtol函数的第一个参数是const char*
      

  8.   


    那你是unicode的了?呵呵。 换成_tcstol就可以了。