Int32 値を 3 バイト (24 ビット) の整数に変換する必要があります。エンディアンはそのまま(少し)ですが、符号を適切に移動する方法がわかりません。値は既に適切な範囲に制限されています。4 バイトを 3 に変換する方法がわかりません。C# 4.0 を使用します。これはハードウェアの統合のためなので、24 ビットの値が必要で、32 ビットは使用できません。
8384 次
2 に答える
3
これを見つけました: http://bytes.com/topic/c-sharp/answers/238589-int-byte
int myInt = 800;
byte[] myByteArray = System.BitConverter.GetBytes(myInt);
配列の最後の 3 つの要素を取得するだけでよいようです。
編集:
ジェレミアが指摘したように、次のようなことをする必要があります
int myInt = 800;
byte[] myByteArray = System.BitConverter.GetBytes(myInt);
if (BitConverter.IsLittleEndian) {
// get the first 3 elements
} else {
// get the last 3 elements
}
于 2011-02-07T06:20:42.833 に答える
3
その変換を行いたい場合は、4 バイトの数値の上位バイトを削除するだけです。2 の補数表現は符号を正しく処理します。Int32
変数に24 ビットの数値を保持したい場合は、 を使用v & 0xFFFFFF
して下位 24 ビットのみを取得できます。バイト配列に関するあなたのコメントを見ました。配列にスペースがある場合は、数値の 4 バイトすべてを書き込み、最初の 3 バイトだけを送信してください。ただし、これはリトルエンディアン システムに固有のものです。
于 2011-02-07T06:19:07.560 に答える