我要编写这样一个函数,有一帧数据,共35个字节(byte),但我需要取出里面的某些位(bit)。因为是具体到某位代表相应的参数。该如何实现啊?请各位帮忙啊!最好些详细一点哈,我是处学者:)

解决方案 »

  1.   

    用与(AND)去操作应该可行的。要取的位和1与,不要的位和0与。
      

  2.   

    那我把问题再说一下:一帧的数据总共35个字节,也就是共35*8个bit,我在处理这帧数据时,需要对提出每个的bit,因为每个bit代表一个参数的值。就是要做这样一个函数,可以从这35*8各bit里,提出来,我要的某个bit.
      

  3.   

    同意 Kevin_Lmx(繁华阅尽)
    var 
      Frame:array[0..35] of byte;
      Bit:Byte
    .
    .
    .
    //取某位 n:要取的位 如110位,则先取Fram[13],
    //然后左移6位和$80与
    Bit:=(Frame[n div 8] shl (n mod 8)) and $80
    //不知对不对,试一下吧,我现在在网吧里,手头没有DELPHI
      

  4.   

    测试了一下:if boolean(Frame[(n-1)div 8] shl ((n-1) mod 8) and $80)then
      showmessage('value of this bit is 1' )
    else 
      showmessage('value of this bit is 0');