次の状況があります。
struct object1 {
bool a:1;
bool b:1;
uint8_t c:2;
bool d:1;
abc e:3;
uint16_t header;
uint8_t footer;
uint8_t mid[4];
}
私は構文を知らないかもしれませんが、C# でビットを操作するのは C++ ほど簡単ではありません。BitArray クラスと BitConverter クラスを使用してデータを設定するメソッドを作成しましたが、問題が発生しました。
object1 * rqr = (object1 *) &Msg.Data[2];
基本的に、オブジェクトをバイト配列にキャストしています。私が行ったすべての検索はシリアライゼーションを叫びますが、上記の行を真に変換するために、追加のメタデータなどを持つことはできません。
私は本当にメモリの場所へのポインタを作成し、その場所をそのオブジェクトに「キャスト」したいと思っています。これは可能ですか?そうでない場合、この問題の解決策はありますか? このレベルのビット操作が完全に取り除かれているとは思えません。私はそれを仮定する前に知らないだけでデフォルトします。
編集:: C# では管理型へのポインターが許可されていないことを理解しています。私が求めているのは、次のように言う方法があったかどうかです。
Byte[] ayData = new Byte[8];
ObjectOfSize8 nObject = (ObjectOfSize8)ayData;
上記が機能しないことは理解していますが、オブジェクトのメモリサイズを理解できるほど頭が良ければ、言語にデータキャストを許可するものはありますか?