我在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