0

整数をバイト単位で格納する効率の良い方法を探しています。

状況は次のとおりです: 2 つの整数があります。値 1 は「1857」(11 ビット) で、値 2 は「14」(4 ビット) と 2 バイト (16 ビット) です。私が探しているのは、2 つの整数を 2 バイトに格納することです。これは、最初の整数を切り取り、8 ビットを最初のバイトに入れ、残りと 2 番目の整数を 2 番目のバイトに入れることを意味します。また、それらを元に戻す必要があります。

それを行う方法または.netクラスはありますか? BitConverter クラスを見つけましたが、このクラスは 1 つの整数のみを完全なバイト配列に変換するため、探しているものではありません。

4

1 に答える 1

3

そのためにビット演算子を使用できます: ビットごとの AND (&)、または (|)、および左シフト (<<) および右シフト (>>):

int value1 = 1857;
int value2 = 14;

int result = value1 | (value2 << 11);

元の値に戻すには、それを逆にする必要があります。

int result1 = result & 0x7ff; // 1857
int result2 = result >> 11; // 14
于 2014-02-06T14:59:33.690 に答える