複雑なデータ構造を受け取る UDP クライアントを作成しています。私は C++ の構造を持っていますが、私のプログラムは C# です。
Bitfiels と共用体にはさまざまな構造があります。
構造体を手動で変換する必要がない方法はありますか?
また、C# でビットフィールドとユニオンを実装する簡単な方法はありますか?
現在、ビットフィールドのプロパティを使用していますが、これは難しい作業であり、間違いが発生する可能性が高くなります。
私が今行っている簡単な例を提供しました。それぞれ 100 行のコードを持つ約 50 の構造体があります。
例 C++:
typedef struct Message_s
{
unsigned char var : 2;
unsigned char var2 : 6;
union
{
struct
{
unsigned char sVar;
unsigned char sVar2;
}
char arr[32];
}
}Message_t;
例 C#:
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Sequential)]
struct Message_s
{
private byte Field1
public byte var
{
get
{
return (byte)(Field1 & 0x03);
}
set
{
Field1 = (byte)((Field1 & ~0x03) | value);
}
public byte var2
{
get
{
return (byte)(Field1 & 0xFC);
}
set
{
Field1 = (byte)((Field1 & 0x03) | value<<2);
}
}
//unions may be possible with properties...
}