我想双阵列,以字节数组和字节数组转换为双阵列转换为字节阵列,反之亦然
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Linq;
namespace BitConversion
{
class Program
{
static void Main(string[] args)
{
double[] Array = new double[] { 10.0, 20.0, 30.0, 40.0 };
byte[] byteArray = GetBytesAlt(Array);
for (int i = 0; i < byteArray.Length; i++)
{
Console.Write(byteArray[i]);
Console.Write(",");
}
Console.WriteLine();
double[] doubleArray = GetDoublesAlt(byteArray);
for (int i = 0; i < doubleArray.Length; i++)
{
Console.Write(doubleArray[i]);
Console.Write(",");
}
Console.WriteLine();
Console.ReadLine();
}
/// <summary>
/// convert to bytes
/// </summary>
/// <param name="values"></param>
/// <returns></returns>
static byte[] GetBytesAlt(double[] values)
{
/*var result = new byte[values.Length * sizeof(double)];
Buffer.BlockCopy(values, 0, result, 0, result.Length);
return result;*/
return values.SelectMany(value => BitConverter.GetBytes(value)).ToArray();
//return values.SelectMany(value => BitConverter.GetBytes(value)).ToArray();
}
static double[] GetDoublesAlt(byte[] bytes)
{
/* var result = new double[bytes.Length/sizeof(double)];
Buffer.BlockCopy(bytes, 0, result, 0, bytes.Length);
return result;*/
return Enumerable.Range(0, bytes.Length/sizeof(double)).Select(offset => BitConverter.ToDouble(bytes, offset * sizeof(double))).ToArray();
}
}
}
使用convert接近当字节被转换回双打 的数字越来越10.0,20.0,30.0,40.0 .....
如何找回相同的数字?
我的意思是如果输入的双数是10.0,20.0,30.0,40.0, 而且我已经得到相同的数字是10.0,20.0,30.0,40.0。
我不明白的问题。你说你回来了相同的号码,你想要回到相同的号码?我尝试了你的代码,确实得到了相同的数字。问题是什么? – zmbq 2012-03-06 06:33:35
问题在这里只是'10'和'10.0'?如果是这样,那只是一个格式化的东西。无论哪种方式,它都是相同的**号码。如果你在'Array'上循环,你会发现'Array'给出''10,20,30,40'' – 2012-03-06 06:41:36
我想打印数字为10.0 ... – Raghav55 2012-03-06 06:51:41