从文本框中得到CString strEdit="123456789101"; (strEdit长度不固定)怎样将strEdit 中的内容两位一字节存入 BYTE str[6]中,str[0]=01;str[1]=91.......如何实现,用CString函数处理,还是用char处理 ;

解决方案 »

  1.   

    对字符串处理不熟,还请多多指教,atof()不行;
      

  2.   

    随便
    每取两位
    atoi()即可
      

  3.   

    memcpy
    自己控制拷贝的位置
      

  4.   

    定义一个临时变量
    char ch[3]
    还有一个指针char*
    将指针知道末尾字符
    然后向前移
    这都是看得到的要不就从头至尾,只不过写进去的数祖是从后面开始写
      

  5.   


    long str2szByte(const CString& str,BYTE** szByte)
    {
    if (!szByte)return 0;
    ASSERT(!(str.GetLength()%2)&&str.GetLength());
    long size=str.GetLength()/2;
    *szByte=new BYTE[size];
    for (int i=0,j=0;j<size;i+=2,j++)
    {
    CString temp=str.Mid(i,2);
    int vau=_ttoi(temp.GetString());
    (*szByte)[j]=(BYTE)vau;
    }
    return size;}
    //测试代码
    CString str=TEXT("123456789011");
    BYTE* szByte=NULL;
    long size=str2szByte(str,&szByte);
    BYTE test=szByte[size-1];
      

  6.   

    结帖,
    我是这样做的,用基本的函数;
    char strTemp[13];
    memset(strTemp,0,13);
    sprintf(strTemp,"%s",m_MeterAddr);    for(int i=0;i<6;i++)
    {
    if(strlen(strTemp)>=2)
    {
    task.pMeterPara->MeterAddr[i]=atoi(&strTemp[strlen(strTemp)-2]);
    strTemp[strlen(strTemp)-2]='\0';
    }
    else if(strlen(strTemp)==1)
    {
    task.pMeterPara->MeterAddr[i]=atoi(&strTemp[strlen(strTemp)-1]);
    strTemp[strlen(strTemp)-1]='\0';
    }
    else
    {
    task.pMeterPara->MeterAddr[i]=0;
    }
    }
      

  7.   


    BYTE byEdit[6];

    CString strBuf = strEdit;
    for (int i = strEdit.GetLength(),int j = 0; i>0 && j<6; j++,i-=2)
    {
    if (strBuf.GetLength()>=2)
    byEdit[j] = _ttoi(strBuf.Right(2).GetBuffer(2));
    else byEdit[j] = _ttoi(strBuf);
    strBuf.Delete(i-2,2);
    }
      

  8.   


    CString Src = "123456789101";
    char tmp[12] = {0};  //末尾0
    BYTE str[6] = {0};

        
    int len = Src.GetLength(); memcpy(tmp, Src.GetBuffer(len), sizeof(tmp)); len /= 2;
    for (int i = len - 1; i >= 0; i--)
    {
    const char ch = tmp[2*i];  //高位
    const char cl = tmp[2*i + 1];      //低位
    int h = atoi(&ch)* 10;
    int l = atoi(&cl);
    str[i] = h + l;
    }