1.有这样一串 16进制的字符串
02 31 30 20 20 20 20 31 32 30 20 20 20 20 30 30 0D
想截取到char中,成这样cChar1 = '02';
cChar2 = '31' 
cChar3 = '30'
cChar4 = '20' 
...
看看有更好的方法么?2.目前用的方法
istrstream s(buf);
char cT[2];
char cA[2];  
char cB[2];  
char cC[2];  
s.seekg(n+0);
s >> cT >> cA >> cB >> cC;
但是在 /MD 也就是 Release下, 可以取到值,但是我想把 cA,cB取到的16进制的值换成10进制并转成二进制后就会出现问题.
用 /MDd,就可以.
在 /MD的版本下,打印出的信息如下.nA.,nB为int型
sscanf(cA,"%2x",&nA);
sscanf(cB,"%x",&nB);
输出:   ca= 1, cb=30, nA=0, nB=48
不知道大家注意到没, cA前面的 3 少了,但是用 /MDd版本,就是正常输出
ca= 31, cb=30, nA=0, nB=48对了,这个程序是 共享的dll程序,试过/MT 不行.

解决方案 »

  1.   

    02 31 30之间的是空格吗?
    CString存储的?
      

  2.   

    回楼上, 中间的是空格。 char 存储的,但可以转成CString.
    用/MT不行, 我试了。同样的错误。
    ca= 1, cb=30, nA=0, nB=48上面的ca 前面会少个 3(红色处), 请看完整体内容,不知道是不是我表述的不清楚。
      

  3.   

    发给你也不好调用,这个是一个单独的dll, 需要用到 双串口. 我只能截取那部份代码给你.
      

  4.   

    已经发送过去了,请帮忙分析一下.
    我目前是在 编译选项里在 Release里把 /MD换成 /MDd来编译调用,不知这样把dll放到客户那去会不会运行不成功. 
      

  5.   


    我也回你邮件了, 你看下. 
    可能是我描述太简单了. 另外想问下,用 /MDd编译出来的dll放到现场环境(没装VC6.0)  需不需再单独加别的dll或.lib
      

  6.   

    我是VS2008,另外我给你的代码,VC6应该也没有问题。如果MD这些有问题,应该不是这些代码造成的,可能是你要链接的lib和你工程的冲突。
      

  7.   

    明白你的代码思路. 只能满足我一部份,我现在很想知道我的代码为什么在 /MD下就会取出来有空格,在/MDd下就正常编译.