假设您希望将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;
}
10.0
-> 10),还是想要获取底层机器表示的八个字节(例如用于序列化)? - Richard