从字节列表构建变量的最快方法?

时间:2018-09-19 09:08:58

标签: c#

我有一个List<byte>,其中包含从串行端口接收到的变量的字节。变量的类型可以变化,我们只知道变量的大小(以字节为单位)。

List<byte> data = new List<byte>();

byteList.Add(0x12);    //test values
byteList.Add(0x34);
byteList.Add(0x56);
byteList.Add(0x78);
byteList.Add(0x9a);

问题1:当我们不知道哪种类型,并且在运行时将了解其大小时,哪种类型最适合用于变量?现在,我以最大可能的大小声明了该变量。我应该将其声明为对象吗?

public UInt64 value;

第二季度:什么是将相应字节从List复制到此变量的最佳和最快方法?现在,我尝试逐字节地移动它们,但对我来说似乎不是一个好方法。所以我想使用BitConverter,但它是用于数组而不是列表。

示例1

when varSize = 2;      

然后

myVar should get 0x1234 as the value and (Uint16) as the type

示例2:

when varSize = 4;

然后

myVar should get 0x12345678 as the value and (Uint32) as the type 

编辑: 这是一个数据记录器应用程序。用户给我外部存储器中变量的地址和大小,我的应用程序从外部设备读取该存储器。然后,用户可以选择如何查看该变量,他/她可以希望将其查看为整数,浮点数或双精度数等。但这始终是数字

1 个答案:

答案 0 :(得分:2)

您可以使用BitConverter。可以在调用ToArray()时使用该列表

https://docs.microsoft.com/en-us/dotnet/api/system.bitconverter?view=netframework-4.7.2

使用这些功能,您可以解析长度为1、2、4和8的数字,包括整数,有符号/无符号和浮点数。