2017-05-31 5 views
0

私は4バイトのデータストリームを持っていますが、私はそれらを分割して別の変数に割り当てることを希望しました。私が受け取るデータは16進形式であることに留意してください。 P_settings上記4バイトのデータをどのように解読してそれに応じて分割し、意味のある変数に割り当てるのですか?

P_settings 4bytes p_timeout [6:0] 
        p_s_detected[7] 

        p_o_timeout [14:8] 
        p_o_timeout_set [15] 

        override_l_lvl [23:16] 
        l_b_lvl [31:24] 

は4バイトである、のは言わせて、私は彼らが現在p_timeout [6:0] requires 7 bits of those 4 byte.

、私はビットにちょうど1バイトの分割is..for試してみましたが、実装のようなビットにバイト分割することを望んでいました。

var soch = ((b_data>> 0)& 0x7F); if i want first 7 bits 

私は4バイトのためにそれをどのように行うのですが、このような

+0

あなたはUINTを使用して考えがありますか? 32ビットです。一般的に、必要なビットが4バイトの値で異なるバイトに分割されている場合、それらが別々のバイトにあるという事実を心配する必要はありません。すなわち、バイト結果=((b_data&0x000ff000)>> 12)はビット12-20を引き出すでしょう。 –

答えて

2

てみコードをストリーミングします。あなたは入力がストリームであると言いました。

public class P_Settings 
    { 
     byte p_timeout; //[6:0] 
     Boolean p_s_detected; //[7] 

     byte p_o_timeout; // [14:8] 
     Boolean p_o_timeout_set; // [15] 

     byte override_l_lvl; //[23:16] 
     byte l_b_lvl; //[31:24] 

     public P_Settings(Stream data) 
     { 
      byte input = (byte)(data.ReadByte() & 0xff); 
      p_timeout = (byte)(input & 0x7F); 
      p_s_detected = (input & 0x80) == 0 ? false : true; 

      input = (byte)(data.ReadByte() & 0xff); 
      p_o_timeout = (byte)(input & 0x7F); 
      p_o_timeout_set = (input & 0x80) == 0 ? false : true; 

      override_l_lvl = (byte)(data.ReadByte() & 0xff); 
      l_b_lvl = (byte)(data.ReadByte() & 0xff); 
     } 
    } 
-1

SO、それは私がシングルバイトでそれらを分離し、バッファに入れて&個別に動作し、あなたがデータを取得します)。.. 1に思っていること、それははるかに容易に判明。すべてのサポートに感謝します。

**

   byte input = (byte)(buffer[10]);//1 byte 
       var p_timeout = (byte)(input & 0x7F); 
       var p_s_detected = (input & 0x80) == 0 ? false : true; 

       input = (byte)(buffer[11]);//1 byte 
       var p_o_timeout = (byte)(input & 0x7F); 
       var p_o_timeout_set = (input & 0x80) == 0 ? false : true; 

       var override_l_lvl = (byte)(buffer[12] & 0xff);//1 byte 
       var l_b_lvl = (byte)(buffer[13] & 0xff); //1 byte 

は**

+0

これはjdwengの正解のほぼ完全なコピー貼りです... – Herb

関連する問題