2016-09-15 6 views
2

私はC#で、このような配列のバイトを持っている:C#バイト配列[]内の選択された値だけを読み取る方法?

byte[] reply = new byte[] {0x09, 0x02, 0x08, 0x63, 0x01, 0x01, 0x10, 0x21, 0x03, 0x5D, 0x01, 0x06}; 

のみバイト配列で{0x01で、0x06に}値を読み取るためにどのように? どうすればいいですか?私はC#の初心者です。注目してくれてありがとう。

+0

[C#アレイチュートリアル](https://msdn.microsoft.com/en-us/library/aa288453%28v=vs.71%29.aspx) – txtechhelp

+0

あなたはエラーを得ることはありませんバイトエラーを宣言しています。 – JeetDaloneboy

+0

はい私はカンマを忘れました。 – yose

答えて

3

まず、間違った方法で配列を宣言していると思いますが、コンマはありません。

byte[] reply = new byte[] {09, 02, 08, 63, 01, 01, 10, 21, 03, 5D, 01, 06}; 

あなたは2つの値を知っていれば次に、あなたが読みたい:あなたは別の配列に必要な値を持っている場合

byte[] values = reply.Where(val => val == 01 || val == 06).ToArray(); 

または、(最初​​にあなたの名前空間にusing System.Linq;を追加):

byte[] need = new byte[] { 01, 06 }; 
byte[] values = reply.Where(val => need.Contains(val)).ToArray(); 
+0

あなたに大きな感謝、これは私が必要とする答えです。 – yose

2

まず、初期化が間違っています。

  1. 値はコンマで区切る必要があります。
  2. 「5D」のような値は、データ型のバイトではありません。

    byte[] reply = new byte[] {0x09, 0x02, 0x08, 0x63, 0x01, 0x01, 0x10, 0x21, 0x03, 0x5D, 0x01, 0x06}; 
    var answer = reply.Where(x => x.Equals(0x01) || x.Equals(0x06)); 
    
+0

はい、「5d」は(また)二重リテラルですが、OPは16進形式のバイト値を意味していました。正しい方法は '0x5D'です。 –

関連する問題