1)一个数组的初期化内容如下:
BYTE m_byTmp [8] = { 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x44, 0x44 };2)程序中会读取一个文件,文件的内容如下:
0x55556666777788883)我在程序中可以将这个文件中的内容读入并放到一个CComBSTR的变量中,请问我如何把这个CComBSTR变量的内容,覆盖到上面1的BYTE数组中?并能得到如下的期待结果:
m_byTmp [8] = { 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0x88, 0x88 };谢谢各位帮忙回答一下。

解决方案 »

  1.   

    CStdioFile类读取文件,然后调用CString::Mid(..,2);来循环解析得到数据,再利用_tcstoul()转一下
      

  2.   

    1、用CString类的方法,分离各个数据;
    2、atoi();
      

  3.   

    谢谢您,如果不用CString的情况下,该怎么做?
      

  4.   

    谢谢您,如果不用CString的情况下,该怎么做?
      

  5.   

    谢谢您,我先用LPSTR试一下。有问题在请教您。
      

  6.   

    你文件的是什么内容啊?字符串?二进制?CComBSTR里面的内容是什么?BSTR是2字节的,byte是一个字节的。这里还需要转换?可以试试SAFEARRAY
      

  7.   

    文件里存放的是这样的内容:2923;>84>16<=6:> 一共16位我现在写的转换方法如下,请大家指点一下:
    BYTE m_byTmp [8] = { 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x44, 0x44 }
    CComBSTR bstrTmp = L"2923;>84>16<=6:>"
    BYTE bytmp[8];
    Convert(bstrTmp , bytmp, sizeof(bytmp));void :Convert(LPCWSTR pwszStr, BYTE* pbyBinary, UINT cbBinary)
    {
        if (pwszNibble == NULL || pbyBinary == NULL || cbBinary == 0)
        {
            return;
        }    for (UINT i = 0; i < cbBinary; i++)
        {
            pbyBinary[i] = ((pwszNibble[i * 2] - L'0') << 4) | (pwszNibble[i * 2 + 1] - L'0');
        }
    }for (int i = 0; i < 8; i++)
    {   m_byTmp [i] = bytmp[i];
    }