BitConverterクラスを使用して、バイトの配列を必要な整数形式に変換できます。
16ビットを取得している場合は、それらをUInt16に変換します。
C#はエンディアンを定義しません。これは、実行しているハードウェアによって決まります。IntelおよびAMDプロセッサはリトルエンディアンです。BitConverter.IsLittleEndianを使用して、プラットフォームのエンディアンを学習できます。.NETを実行しているコンピューターとデータを提供するハードウェアのエンディアンが同じでない場合は、2バイトを交換する必要があります。
byte[] inputFromHardware = { 126, 42 };
ushort value = BitConverter.ToUInt16( inputFromHardware, index );
15(または16?)入力のどれがアクティブです
ビットがハードウェアフラグである場合、16個すべてが何かを意味するために使用されている可能性があります。ビットが符号付き数値を表すために使用される場合、ビットの1つは正と負を表すために使用されます。ハードウェアはステータスビットを提供しているため、どのビットも符号として解釈されるべきではありません。
&
特定のビットがアクティブであるかどうかを知りたい場合は、演算子とともにビットマスクを使用できます。たとえば、バイナリマスク
0000 0000 0000 0100
16進数に対応
0x0004
右から3番目のビットがオンになっているかどうかを確認するには、次を使用します。
bool thirdBitFromRightIsOn = (value & 0x0004 != 0);
アップデート
製造元が値8000(16進数と想定)がチャネル15がアクティブであることを表すと言っている場合は、次のように見てください。
あなたのビットマスク
1000 0000 0000 0000 (binary)
8 0 0 0 (hex)
メーカーからの情報に基づいて、左端のビットはチャネル15に対応します。
次のようにそのマスクを使用できます。
bool channel15IsOn = (value & 0x8000 != 0);