将Double转换为Short再转换为Byte
本文关键字:转换 Byte Short Double | 更新日期: 2023-09-27 18:24:21
我需要将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];
我不能再把这个阵列做大了。。。
有人能帮忙吗?谢谢
(很抱歉我英语不好,这不是我的主要语言)`
您可以使用linq来简化这一切:
byte[] wavByteDer = wavPuroDer.Select(x => Convert.ToInt16(x))
.SelectMany(x => BitConverter.GetBytes(x))
.ToArray();
(注意:只需确保您有using System.Linq;
)