Comment convertir un int [,] en byte [] en C#? Certains code sera appréciéComment convertir un int [,] en byte [] en C#
EDIT:
J'ai besoin d'une fonction pour effectuer les opérations suivantes:
byte[] FuncName (int[,] Input)
Comment convertir un int [,] en byte [] en C#? Certains code sera appréciéComment convertir un int [,] en byte [] en C#
EDIT:
J'ai besoin d'une fonction pour effectuer les opérations suivantes:
byte[] FuncName (int[,] Input)
Comme il y a très peu de détails dans votre question, je ne peux que deviner ce que vous essayez de faire ... en supposant que vous voulez « fla tten » un tableau 2D de ints dans un tableau 1D d'octets, vous pouvez faire quelque chose comme ça:
byte[] Flatten(int[,] input)
{
return input.Cast<int>().Select(i => (byte)i).ToArray();
}
Notez l'appel à Cast
: c'est parce que les tableaux multidimensionnels mettent en œuvre IEnumerable
mais pas IEnumerable<T>
Il semble que vous écrivez les mauvais types, mais voici ce que vous cherchez peut-être pour:
byte[] FuncName (int[,] input)
{
byte[] byteArray = new byte[input.Length];
int idx = 0;
foreach (int v in input) {
byteArray[idx++] = (byte)v;
}
return byteArray;
}
Je donnerais votre estimation "plus susceptible d'être son but". –
La mienne est plus rapide! – mquander
@mquander vrai, mais le mien semble correspondre à ses besoins. –
Les convertis de BitConverter types primitifs à tableaux d'octets:
byte[] myByteArray = System.BitConverter.GetBytes(myInt);
Vous semblez vouloir un tableau à deux dimensions d'ints à convertir en octets. Combinez le BitConverter avec la construction de boucle requise (par exemple foreach) et la logique que vous voulez combiner les dimensions du tableau.
Voici une implémentation qui suppose que vous essayez la sérialisation; aucune idée si c'est ce que vous voulez, cependant; il préfixes les dimensions, puis chaque cellule en utilisant l'encodage de base:
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;
}
Cela fait si peu de sens que ma tête fait mal. Vous devez spécifier beaucoup plus de choses - tellement plus que je ne peux même pas tout énumérer! Commençons par "Que diable est le problème que vous essayez de résoudre?" –
quelques plus de détails ajoutés. – mouthpiec
Que sont censés signifier '[,] int' et' [] byte'? Cela n'existe pas en C#, vous voulez probablement dire 'int [,]' et 'byte []' ... –