How to convert an int[,] to byte[] in C#

穿精又带淫゛_ 提交于 2019-12-30 07:50:19

问题


How to convert an int[,] to byte[] in C#? Some code will be appreciated

EDIT:

I need a function to perform the following:

byte[] FuncName (int[,] Input)

回答1:


Since there is very little detail in your question, I can only guess what you're trying to do... Assuming you want to "flatten" a 2D array of ints into a 1D array of bytes, you can do something like that :

byte[] Flatten(int[,] input)
{
    return input.Cast<int>().Select(i => (byte)i).ToArray();
}

Note the call to Cast : that's because multidimensional arrays implement IEnumerable but not IEnumerable<T>




回答2:


It seem that you are writing the types wrong, but here is what you might be looking for:

byte[] FuncName (int[,] input)
{
    byte[] byteArray = new byte[input.Length];

    int idx = 0;
    foreach (int v in input) {
        byteArray[idx++] = (byte)v;
    }

    return byteArray;
}



回答3:


Here's an implementation that assumes you are attempting serialization; no idea if this is what you want, though; it prefixes the dimensions, then each cell using basic encoding:

public byte[] Encode(int[,] input)
{
    int d0 = input.GetLength(0), d1 = input.GetLength(1);
    byte[] raw = new byte[((d0 * d1) + 2) * 4];
    Buffer.BlockCopy(BitConverter.GetBytes(d0), 0, raw, 0, 4);
    Buffer.BlockCopy(BitConverter.GetBytes(d1), 0, raw, 4, 4);
    int offset = 8;
    for(int i0 = 0 ; i0 < d0 ; i0++)
        for (int i1 = 0; i1 < d1; i1++)
        {
            Buffer.BlockCopy(BitConverter.GetBytes(input[i0,i1]), 0,
                  raw, offset, 4);
            offset += 4;
        }
    return raw;
}



回答4:


The BitConverter converts primitive types to byte arrays:

byte[] myByteArray = System.BitConverter.GetBytes(myInt);

You appear to want a 2 dimensional array of ints to be converted to bytes. Combine the BitConverter with the requisite loop construct (e.g foreach) and whatever logic you want to combine the array dimensions.



来源:https://stackoverflow.com/questions/3322473/how-to-convert-an-int-to-byte-in-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!