我在C#中類似工會在C++中聲明:如何通過一個操作將字節數組轉換爲聯合結構?
[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;
}
我也有byte[] bytes
大小爲5,我需要我的數組來標記對象轉換。
var marker = new Marker
{
label = bytes[0],
count = BitConverter.ToInt32(bytes, 1)
}
或者:我可以通過下面的方式做到這一點
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);
如何通過一個操作字節數組轉換爲工會結構?
如果表現是你的問題,那將會適得其反。固定你的數據並編組它應該比分配數值更耗時。 – Sefe
如果你想要性能,我會使用像C++這樣的語言。 –
他在問題中說他想要最佳表現。 Interop不會是要走的路... – Sefe