小弟想一个东西,里面用到16进制加运算,例如:在控件EDIT1输入“02:3D:4A”,然后点击加运算后,在控件EDIT2输出“02:3D:4B”。这个应该怎么做???嗯,用CString::Mid()已经可以抽取到4A了,但是怎么处理,然后最后显示不明白,大哥们最后来个例子,谢谢了

解决方案 »

  1.   

    _tcstoul(xxx, NULL, 16);将CString转成16进制,然后再运算
      

  2.   

    嗯,二楼说的我也明白,能给哥例子看否?我自己本来想法是先把CSting转化成十进制数,然后加1 ,然后十进制再转化成十六进制,然后十六进制数字再转化成CSting。不过只是想,不知道怎么实现啊
      

  3.   

    int nVal = 0x4B;
    nVal = nVal + 1;printf("%x\n",nVal);  //16进制显示
    printf("%d\n",nVal);  //10进制显示
      

  4.   

    atoi字符串转换成整数
    itoa将整数转换成字符串,注意最后一个参数,那个是控制进制的,也就最终要显示的字符串的格式
      

  5.   

    恩,用这个函数将字符串转化为16进制数,然后+1,这个数字应该设置成什么类型,然后怎样转化成CString?????
      

  6.   

    CString str;
    str.Format(_T("%X"), nVal);
      

  7.   

    注意进位,比如最后的变成02:3D:FF的时候,再加1的时候就要进位了,变成02:3E:00了
      

  8.   


    void CTestMacDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    UpdateData();
    int i;
    i=_tcstoul(m_num1, NULL, 16);
    i=i+1;
    m_num2.Format(_T("%X"),i);
    UpdateData(FALSE);
    }
    这个是我刚试验的代码,嗯,成功了!不过有点疑问,就是i是int类型的,而_tcstoul(m_num1,NULL,16)这个数应该是10进制的数,这个=号应该怎么理解,强制转换吗???不管怎样,结贴。谢谢大家,不过分太少