将Double转换为Short再转换为Byte

本文关键字:转换 Byte Short Double | 更新日期: 2023-09-27 18:24:21

我需要将Double[]转换为Short[]再转换为Byte[]

我首先转换为short,因为Double必须有很多位,所以如果我直接将其转换为Bytes,我将得到空白字节。

我有一个叫wavPuroDerDouble[],里面装满了信息

    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]; 

我不能再把这个阵列做大了。。。

有人能帮忙吗?谢谢

(很抱歉我英语不好,这不是我的主要语言)`

将Double转换为Short再转换为Byte

您可以使用linq来简化这一切:

byte[] wavByteDer = wavPuroDer.Select(x => Convert.ToInt16(x))
                              .SelectMany(x => BitConverter.GetBytes(x))
                              .ToArray();

(注意:只需确保您有using System.Linq;