我需要将Double[]
转换为Short[]
到Byte[]
我首先转换为short,因为Double
有很多位,所以如果我将它直接转换为Bytes
,我将得到空字节。
我最初有Double[]
名为wavPuroDer
的信息
short[] wavShortDer = ConvertToShort(wavPuroDer);
byte[] wavByteDer = ConvertToByte(wavShortDer);
public static short[] ConvertToShort(double[] doble)
{
short[] shorty = new short[100000000];
for (int i = 0; i < doble.Length; i++)
{
shorty[i]=Convert.ToInt16 (doble[i]);
}
return shorty;
}
public static byte[] ConverToByte(short[] shorty)
{
byte[] bytey = new byte[1000000000];
int j = 0;
for (int i = 0; i < shorty.Length; i++)
{
byte[] byteArray = BitConverter.GetBytes(shorty[i]);
bytey[j] = byteArray[0];
bytey[j+1] = byteArray[1];
j = j + 2;
}
return bytey;
}
我的问题是,我在行中获得了System.IndexOutOfRangeException
bytey[j] = byteArray[0];
我不能让这个数组更大......
有人可以帮忙吗? 谢谢!
(抱歉我的英语不好,不是我的主要语言) `
答案 0 :(得分:1)
您可以使用linq简化所有这些:
byte[] wavByteDer = wavPuroDer.Select(x => Convert.ToInt16(x))
.SelectMany(x => BitConverter.GetBytes(x))
.ToArray();
(注意:请确保您拥有using System.Linq;
)