从VC编写的软件里,实时传输8Byte的信息。
该信息
1、第一个Byte,总是"0D0A"表示开头
2、第二个Byte,高4bit表示一个意思,低4bit表示另一个意思
3、后面6个Byte,都是一些数字。
4、最后是换行符。
5、再来就是重复1请问,
1、我怎么去判断0D0A?
2、怎么把第二个Byte分出,4bit高,4bit低?

解决方案 »

  1.   

    一个byte表示不了0D0A,应该是两个byte吧
      

  2.   

    得到某纬得值
    function IsBitOn (Value: byte; Bit: Byte): Boolean;
    begin
      Result := (Value and (1 shl Bit)) <> 0;
    end;
      

  3.   

    byte转换成bit数组procedure TForm1.Button2Click(Sender: TObject);
    var
      x: byte;
      b: array[0..7] of  boolean;
      i: integer;
    begin
      x:=$f1;
      for i:=0 to 7 do
      begin
         b[i]:=(x and (1 shl i)) <> 0;
         memo1.Lines.Add(booltostr(b[i]));//b[i]保存得是各个位得值,从低到高
      end;
    end;
      

  4.   

    1  if i = $DA then ...2  var i: Byte;   取高4位: i and $F0 shr 4
       取低4位:  i and $F  
      

  5.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
      x: byte;
      b: array[0..7] of  boolean;
      i: integer;
    begin
      x:=$f1;
      for i:=0 to 7 do
      begin
         b[i]:=(x and (1 shl i)) <> 0;
         memo1.Lines.Add(booltostr(b[i]));//b[i]保存得是各个位得值,从低到高
      end;
    end;