c# - 将 double 组转换为字节数组

标签 c# c#-3.0

如何将 double[] 数组转换为 byte[] 数组,反之亦然?

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(sizeof(double));
        Console.WriteLine(double.MaxValue);

        double[] array = new double[] { 10.0, 20.0, 30.0, 40.0 };
        byte[] convertedarray = ?

        Console.Read();
    }
}

最佳答案

假设您希望将 double 值一个接一个地放置在相应的字节数组中,LINQ 可以简化此操作:

static byte[] GetBytes(double[] values)
{
    return values.SelectMany(value => BitConverter.GetBytes(value)).ToArray();
}

或者,您可以使用 Buffer.BlockCopy():

static byte[] GetBytesAlt(double[] values)
{
    var result = new byte[values.Length * sizeof(double)];
    Buffer.BlockCopy(values, 0, result, 0, result.Length);
    return result;
}

转换回来:

static double[] GetDoubles(byte[] bytes)
{
    return Enumerable.Range(0, bytes.Length / sizeof(double))
        .Select(offset => BitConverter.ToDouble(bytes, offset * sizeof(double)))
        .ToArray();
}

static double[] GetDoublesAlt(byte[] bytes)
{
    var result = new double[bytes.Length / sizeof(double)];
    Buffer.BlockCopy(bytes, 0, result, 0, bytes.Length);
    return result;
}

关于c# - 将 double 组转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6952923/

相关文章:

c# - 有什么方法可以在 L2S 身份映射中查找项目?

mysql - 如何使用 C# 中数据库中的文本动态设置按钮文本?

c# - list.Sort ArgumentException 错误 : IComparer doesn't not return 0(null)

c# - 如何使用表达式树调用带有引用变量的方法

c# - 无法运行程序,因为它要求我附加进程

c# - 如何在一段时间内更改变量

c# - TextTransform.exe 似乎只接受旧版本的 C#

c# - 在 using block 内捕获异常与在 using block 外捕获异常 - 哪个更好?

c# - 显示消息框后如何停止功能

c# - 按命名空间并行运行 ReSharper 测试