0

如何将字节数组中的 4 个字节转换为 32 位浮点数?那么对于 64 位浮点数(双精度),您将如何对字节数组中的 8 个字节执行相同操作?我注意到 C# 中的 BitConverter 类有这个,但是我很好奇它背后的数学。

我目前已经编写了很多字节转换函数,尽管只使用 BitConverter 类而不是我自己的函数会更有效吗?

4

1 回答 1

1

使用这些函数通常会更有效BitConverter,但在某些情况下(例如,将两个字节转换为短字节),如果您编写内联移位和或操作,代码会快得多。

如果有疑问,请使用Stopwatch发布版本和时间来检测代码。这是唯一知道的方法,真的。

但是,如果您正在处理值数组,那么使用Buffer.BlockCopy.

例如,您可以将双精度数组复制到字节数组并返回,如下所示:

double[] original = {1.0, 2.0, 3.0, 4.0, 5.0};
int byteCount = sizeof(double) * original.Length;

byte[] asBytes = new byte[byteCount];
Buffer.BlockCopy(original, 0, asBytes, 0, byteCount);

double[] copied = new double[original.Length];
Buffer.BlockCopy(asBytes, 0, copied, 0, byteCount);

foreach (double d in copied)
    Console.WriteLine(d);

这可能更适合您的特定场景。与以往一样,您需要仔细安排时间来确定它是否有用。

于 2014-04-25T07:51:24.360 回答