2

次のように定義されたバイト配列があるとします。

byte[] byteArray = { 0x08, 0x00 };

配列内の要素を組み合わせて以下を作成する必要があります。

0x0800

次に、それをintに変換します。

2048

このようなもの:

    private static int GetMessageType(byte[] byteArray)
    {
        if(byteArray.Length != 2)
            throw new ArgumentOutOfRangeException("byteArray");

        throw new NotImplementedException();
    }
4

2 に答える 2

4

単純なビット演算子を使用しないのはなぜですか?例えば

byte hiByte = byteArray[0];  // or as appropriate
byte lowByte = byteArray[1];
short val = (short)((hiByte << 8) | lowByte);

この場合、ビット単位の結果は[signed] short(タイトルに続く?)として扱われ、負の値になる可能性がありますが、キャストを削除するだけで必要に応じて変更できます。

于 2012-07-05T22:44:51.373 に答える
1

BitConverter.ToInt16BigEndian変換が必要であると思われる場合を除いて、を使用する必要があります。したがって、Jon Skeetを使用してくださいEndianBitConverterhttp ://www.yoda.arachsys.com/csharp/miscutil/

于 2012-07-05T22:30:58.633 に答える