如何将2维浮点数组转换为字节数组,反之亦然

时间:2013-03-20 11:44:27

标签: c#

我有

形式的数据

float [1000,2]数据。

我想以byte [] b。

的形式转换该数据

我想再次将byte []b转换为float [1000,2]数据的二维数组

我想这样做是因为我可以轻松地以字节的形式将数据保存到服务器。

1 个答案:

答案 0 :(得分:4)

您可以使用这些方法。他们使用简单的编程结构,我认为理解它们并不难。第一种方法将float 2Dimansional数组转换为一个字节数组。它首先声明字节数组,然后每个浮点值转换为4个字节并将它们存储到大字节数组中。

    public byte[] ToByteArray(float[,] nmbs)
    {
        byte[] nmbsBytes = new byte[nmbs.GetLength(0) * nmbs.GetLength(1)*4];
        int k = 0;
        for (int i = 0; i < nmbs.GetLength(0); i++)
        {
            for (int j = 0; j < nmbs.GetLength(1); j++)
            {
                byte[] array = BitConverter.GetBytes(nmbs[i, j]);
                for (int m = 0; m < array.Length; m++)
                {
                    nmbsBytes[k++] = array[m];
                }
            }
        }
        return nmbsBytes;
    }

第二种方法从字节数组转换为2Dimensional float数组。它首先声明数组,然后每四个字节转换为浮点数,然后将其存储到2D浮点数组中的指定位置。

    public float[,] ToFloatArray(byte [] nmbsBytes)
    {
        float[,] nmbs = new float[nmbsBytes.Length /4 / 2, 2];
        int k = 0;
        for (int i = 0; i < nmbs.GetLength(0); i++)
        {
            for (int j = 0; j < nmbs.GetLength(1); j++)
            {
                nmbs[i, j] = BitConverter.ToSingle(nmbsBytes,k);
                k += 4;
            }
        }
        return nmbs;
    }