unsigned char RBuf[10];
unsigned long nLength;
ReadFile(hCom[0], RBuf, 4, &nLength, &OS);RBuf有可能接收到以下数据: M1 01 / M1 02/M1 03 ....
M1是固定的,后面的01会是01-0F中任何一个那么我要判断RBuf的数据除了用if语句写16个if 这种方法外,还有什么办法吗
好像是有一种移位的写法,就是把RBuf往后移两位,直接就能取出01--0F
不过不清楚具体怎么写
好像是 i= RBuf[1] &=0x0F 得到的i就是01--0F中的一个,
麻烦给个详细写法,加点解释,谢谢! 

解决方案 »

  1.   

    CString str=RBuf;
    str=str.Right(2);
      

  2.   

    楼主,其实看不明白你的意思.i = Rbuf[1] & 0x0f 的意思是2个数做位与运算,任何数与0相与为0.得到的结果就是
    RBuf[1] 的低 4位,结果就是 0 - f 了
      

  3.   

    unsigned char 类型如何赋值?
      

  4.   

    逻辑判断可以用 Rbuf[x] & 0x0f
    if(Rbuf[x] & 0x0f)//判断该字节是否为0x01 至 0x0F 之间的一个有效值
    移位通常用于幂次算法,用于此处,多余
      

  5.   

    sorry,应该这样,还是应该有位移
    if(Rbuf[x] && (!(Rbuf[x]>>4)))//判断该字节是否为0x01 至 0x0F 之间的一个有效值
      

  6.   

    switch(RBuf[1])
    {
    case 1: 
      ...
      break; 
    case 2: 
      ... 
      break; ...case 0xF:
      ...
    }
      

  7.   

    unsigned short *p = RBuf; 
    switch(p[1])
    {
    case '10': 
      ... 
      break; case '20': 
      ... 
      break; case '30': 
      ... 
      break; ... case 'F0': 
      ... 
      break; 
    }
      

  8.   

    问这样一个问题:
    有关VC++6.0的操作问题:例如方法A调用方法B,B调用C,C再掉用D这样我要看懂A,那么要最后看到D,如果我看到D 再想回头看A
    只能用查找A的方法回去吗?有没有什么更方便的办法?
      

  9.   

    暂时未发现VC6编译器有这个办法,但是只要我们装一个 VAX
    也就是Visual Assist X 就可以拥有这个功能了,很多朋友都装了这个,里面还有很多提示的功能,使我们的编程加快很多的.另外VS2005以上,也有这个功能,就是把鼠标跳回到之前的位置,可以一直往回跳到A的.
      

  10.   

    多谢finder_zhang的回复了
    另外VC++6.0 是否能安装什么工具,能够达到。net那种折叠代码的效果呢,就是把一个方法折叠,成只有方法名一行
      

  11.   

    写代码多的情况下,来回滚动的上下看简直累死了,我是。net转过来的,很不习惯啊
      

  12.   

    回楼上,没用过有拆叠的,去网上搜一下吧,看有没有什么VC6插件的.
    之前我用C#的,拆叠反而不习惯,老是不见了代码.哈哈.