私はC#でC++での労働組合のようなものを宣言した:バイト配列を1回の操作で構造体構造体に変換するにはどうすればよいですか?
[StructLayout(LayoutKind.Explicit, Size = 5)]
public struct Marker
{
[FieldOffset(0)] public byte label;
[FieldOffset(1)] public int count;
[FieldOffset(1)] private byte count_0;
[FieldOffset(2)] private byte count_1;
[FieldOffset(3)] private byte count_2;
[FieldOffset(4)] private byte count_3;
}
また、私は、私はマーカーオブジェクトに私の配列を変換する必要がサイズ5とbyte[] bytes
を持っています。
var marker = new Marker
{
label = bytes[0],
count = BitConverter.ToInt32(bytes, 1)
}
または::私は、以下の方法でそれを行うことができますOKですが、私はパフォーマンス・ビューから、より最適な方法で行うことが可能であると考え
var marker = new Marker
{
label = bytes[0],
count_0 = bytes[1],
count_1 = bytes[2],
count_2 = bytes[3],
count_3 = bytes[4]
}
- ちょうどの最初のバイトにを指しますbytes
。私はこのようなものを見つけようとしています:
BitConverter.To<Marker>(bytes);
バイト配列を1回の操作で構造体に変換する方法はありますか?
パフォーマンスが問題であれば、それは非生産的です。データを固定しマーシャリングするのは、値を割り当てるだけではなく、時間がかかります。 – Sefe
パフォーマンスが必要な場合は、C++のような言語を使用します。 –
彼は質問で、彼は最適なパフォーマンスを望んでいると言います。 Interopは行く方法ではありません... – Sefe