我需要将一个
我首先将其转换为
一开始,我有一个名为
Double[]
转换成Short[]
再转化为Byte[]
。我首先将其转换为
Short
,因为Double
有太多位,如果我直接转换为Bytes
,会得到空白字节。一开始,我有一个名为
wavPuroDer
的Double[]
,其中装满了信息。 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];
我不能使这个数组变得更大...
能有人帮忙吗?谢谢!
(对不起,我的英语不好,它不是我的母语)
new short[100000000]
,因为你分配的内存要比实际需要的多得多,并且它将被放置在大对象堆上。你应该使用new short[doble.length]
来替代。 - Rhys Bevilaqua