我想知道在vb.net中将长度为4的字节数组转换为整数的最佳方法是什么?我知道BitConverter,但似乎调用函数来执行应该能够通过复制4个字节的内存来完成的操作有些浪费。同样,在相同的线路上,如何将单/双精度从其二进制表示转换为单/双精度变量。
将字节数据复制到内存中并不是.NET(尤其是VB.NET)特别适合的任务。因此,除非您有使用C语言的选择,否则几乎不可避免地需要进行函数调用。
BitConverter是一个经过深思熟虑、经过测试的函数。当然,您可以通过执行以下操作来避免使用它(在C#中):
myInt = (*pbyte) | (*(pbyte + 1) << 8) | (*(pbyte + 2) << 16) | (*(pbyte + 3) << 24);
(顺便说一下,这正是 BitConverter 在将字节数组转换为整数时为您执行的工作...).
然而,这段代码:
换句话说: 你可能可以 "节省" 函数调用,但最终你会明显变得更糟(即使假设你没有引入任何错误)。总的来说,.NET Framework 设计得非常出色,您不应该犹豫使用其功能,除非您真的遇到了(性能)问题。
'其中bits()是长度为4的字节数组
Dim i as Integer
i = (((bits(0) Or (bits(1) << 8)) Or (bits(2) << &H10)) Or (bits(3) << &H18))
你可以使用System.Buffer类将byte[]块复制到int[]中。