起始位、停止位、数据位、校验位这四项合成为一个32位整数,每项对应8位,怎么把分别把这4项取出来??还有怎么把四项合并成一个整数??

解决方案 »

  1.   

    位操作
    移位:>>,<<
    位与:&
    足够了
      

  2.   

    VC提供了LOWORD、HIWORD、LOBYTE、HIBYTE和MAKEWORD、MAKELONG等宏可以用。
      

  3.   

    如说 1100 1011, 0011 0101, 1101 1110 ,1111 0001:
    先转成十六进制(其他进制也行)表示:int a = 0xCB, b = 0x53, c = 0xDE, d = 0xF1;
    int s = (a << 24) + (b << 16) + (c << 8) + d;//合并,s == 0xCB53DEF1
    int i = (s & 0xFF000000) >> 24;//i == a
    int j = s & 0xFF; // j == d;
      

  4.   

    WORD hiData = HIWORD(data)
    WORD loData = LOWORD(data)
    byte1 = HIBYTE(hiData)
    byte2 = LOBYTE(hiData)
    byte3 = HIBYTE(loData)
    byte4 = LOBYTE(loData)byte1-byte4为你想要的数据
      

  5.   

    a = dat & 0xff;
    b = (dat >> 8) & 0xff;
    c = (dat >> 16) & 0xff;
    d = (dat >> 24) & 0xff;