私はC#で、このような配列のバイトを持っている:C#バイト配列[]内の選択された値だけを読み取る方法?
byte[] reply = new byte[] {0x09, 0x02, 0x08, 0x63, 0x01, 0x01, 0x10, 0x21, 0x03, 0x5D, 0x01, 0x06};
のみバイト配列で{0x01で、0x06に}値を読み取るためにどのように? どうすればいいですか?私はC#の初心者です。注目してくれてありがとう。
私はC#で、このような配列のバイトを持っている:C#バイト配列[]内の選択された値だけを読み取る方法?
byte[] reply = new byte[] {0x09, 0x02, 0x08, 0x63, 0x01, 0x01, 0x10, 0x21, 0x03, 0x5D, 0x01, 0x06};
のみバイト配列で{0x01で、0x06に}値を読み取るためにどのように? どうすればいいですか?私はC#の初心者です。注目してくれてありがとう。
まず、間違った方法で配列を宣言していると思いますが、コンマはありません。
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();
あなたに大きな感謝、これは私が必要とする答えです。 – yose
まず、初期化が間違っています。
「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));
はい、「5d」は(また)二重リテラルですが、OPは16進形式のバイト値を意味していました。正しい方法は '0x5D'です。 –
[C#アレイチュートリアル](https://msdn.microsoft.com/en-us/library/aa288453%28v=vs.71%29.aspx) – txtechhelp
あなたはエラーを得ることはありませんバイトエラーを宣言しています。 – JeetDaloneboy
はい私はカンマを忘れました。 – yose