strTemp:= copy(ValIn,m,2);
     DecIntRet:= HexToInt(strTemp); // 到此步,strTemp = '13',HexToInt是16进制转10进制,返回integer
     cRet:=char(DecIntRet);  //到此步,DecIntRet=19,执行后cRet = #19
     strRet_T:=cRet; //到此步,strRet_T = #$13,问题就出在这里
     ValRet:=ValRet + strRet_T;
语句中,strRet_T = #$13 我理解是系统又将其自动转换为了16进制,和预想的结果不一致。转一段同样功能的VB代码:      strBuf = Mid(strHex, i, 2)
     byteBuf = CByte(Val("&H" & strBuf))
     strReturn = strReturn & Chr(byteBuf)再转一段同样功能的C++代码:
     temp = csChar.GetAt( i ); //temp为CString类型
     temp += csChar.GetAt( i + 1 );
     HexToDec( temp, nRet );
     cRet = nRet;   //cRet为TCHAR类型,nRet为int类型
     csRet += cRet;希望能获得这样的功能。不胜感激。

解决方案 »

  1.   


    strTemp:= copy(ValIn,m,2); 
        DecIntRet:= HexToInt(strTemp); // 到此步,strTemp = '13',HexToInt是16进制转10进制,返回integer 
        cRet:=chr(DecIntRet);  //到此步,DecIntRet=19,执行后cRet = #19 
        strRet_T:=cRet; //到此步,strRet_T = #$13,问题就出在这里 
        ValRet:=ValRet + strRet_T; 
      

  2.   

    這不管十進制還是十六進制值最終轉換後都是相等的。你要實現什麼樣的?? VB,C++的都給了一半。
      

  3.   

    一半就够了,就是实现一个加密压缩的算法。这是其中一部分:
    0.一个16进制字符的字符串;
    1.将每个16进制(两位一组)的字符转为10进制的数字;
    2.将这个数字转换为ASC的字符;
    3.追加到一个字符串后面,最后处理完返回
      

  4.   

       strTemp:= copy(ValIn,m,2); 
       DecIntRet:= HexToInt(strTemp); // 到此步,strTemp = '13',HexToInt是16进制转10进制,返回integer 
        ValRet:=ValRet + chr(DecIntRet);
      

  5.   

    这样我试过了,最后ValRet里面还是#$13
      

  6.   

    问题再于Ascii 13对应的是回车符 而不是一般数字字母或符号 当然你要把它累加到string型中去就看不出来了
    如果计算出ascii对应是普通字符的话 累加后你才可以看到比较直观的效果
      

  7.   


    用监视看是这样的呀 你试试在最后用showmessage()来看看 是不是有换行符了?
      

  8.   

    我明白你的意思了,你在調試的時候應該能看到的。 但你要是顯示的話,因為這個數字的ASCII碼是不可見的字符,是一個轉義字符 ,C++ \n  你不可能
    在未字符處理的情況下也當成字符顯示出來吧??
    當成字符做加密,位移這些都不是問題,只是顯示被當成了轉義字符。
      

  9.   

    #$13也好,#19也好,chr(19)也好,三者是等价的。楼主何必拘泥于此?