1

有人可以帮助编写一个将字节数组转换为二维 int 数组的方法吗?!

我写的是:

internal int[][] byteToInt(byte[] byteArray)
    {
        int width = (int)Math.Sqrt(byteArray.Length);
        int[][] tmp = new int[width][];
        for (int i = 0; i < width; i++)
        {
            tmp[i] = new int[width];
        }
        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < width; j++)
            {
                tmp[i][j]=(int)byteArray[(i*width+j)];
            }
        }
        return tmp;
    }

但这不能正常工作....

4

2 回答 2

0

将 JPG 转换为字节数组的代码:

public byte[] FileToByteArray(string _FileName)
    {
        byte[] _Buffer = null;

        try
        {
            // Open file for reading
            System.IO.FileStream _FileStream = new System.IO.FileStream(_FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);

            // attach filestream to binary reader
            System.IO.BinaryReader _BinaryReader = new System.IO.BinaryReader(_FileStream);

            // get total byte length of the file
            long _TotalBytes = new System.IO.FileInfo(_FileName).Length;

            // read entire file into buffer
            _Buffer = _BinaryReader.ReadBytes((Int32)_TotalBytes);

            // close file reader
            _FileStream.Close();
            _FileStream.Dispose();
            _BinaryReader.Close();
        }
        catch (Exception _Exception)
        {
            // Error
            Console.WriteLine("Exception caught in process: {0}", _Exception.ToString());
        }

        return _Buffer;
    }
于 2012-06-26T09:34:51.657 回答
0

好的,我认为这会做你想要的。

如果我理解正确,您想拍摄图像并将其转换为 int RGB 值的二维数组。

internal int[,] JpgToInt(String fileName)
{
    Bitmap Bitmap = new Bitmap(fileName);

    int[,] ret = new int[Bitmap.Width,Bitmap.Height];

    for (int i = 0; i < Bitmap.Width; i++)
    {
        for (int j = 0; j < Bitmap.Height; j++)
        {
            ret[i, j] = Bitmap.GetPixel(i, j).ToArgb();
        }
    }
    return ret;
}

虽然它没有回答主要问题,但它确实解决了问题,并且问题的解决方案没有。

在回答主要问题时,没有办法任意取一个字节数组并将其变成一个二维 int 数组,因为您不知道二维数组的维度是多少。

您用于从文件中获取图像的代码是获取 jpg 文件的原始二进制文件的正确方法,但它不会获取自身的图像。(请参阅维基百科了解 jpeg 文件的格式

于 2012-06-26T10:08:28.487 回答