我有一个字节数组,它可以包含数百万字节,并由以下结构表示:该数组分为 n 段,每段 16 字节。每个段的前 8 个字节代表一个 long 类型的值(8 个字节),后面跟着 2 个 short 类型的值(2*4 个字节)。
我寻找将字节数组段转换为以下类型的类对象集合的绝对最快方法:
public class Foo
{
public long Value1 { get; set; }
public float Value2 { get; set; }
public float Value3 { get; set; }
public Foo(long value1, float value2, float value3)
{
Value1 = value1;
Value2 = value2;
Value3 = value3;
}
}
到目前为止我尝试过的是使用 BitConverter.ToInt64(...),... 但是转换时间太长了,因为我必须处理数百万字节大小的数组和数百个这样的数组。
var collection = new List<Foo>();
var byteArraySize = byteArray.Count();
for (var counter = 0; counter < byteArraySize; counter += PacketLength) //Packetlength here is 16
{
collection.Add(new Foo(
BitConverter.ToInt64(byteArray, counter),
BitConverter.ToSingle(byteArray, counter + 8),
BitConverter.ToSingle(byteArray, counter + 12)));
}
有人可以告诉我如何应用位移逻辑来加速这个过程。使用指针逻辑的不安全代码也可以工作。
非常感谢。