safe - que es cast en c#
Convertir un int[] en byte[] en C# (3)
Sé cómo hacerlo a lo largo de todo el proceso: creando una matriz de bytes del tamaño necesario y utilizando un bucle for para convertir cada elemento de la matriz int.
Me preguntaba si había una manera más rápida, ya que parece que el método anterior se rompería si el int
fuera más grande que un sbyte
.
Además de la respuesta aceptada (que ahora estoy usando), una alternativa de una línea para los amantes de Linq sería:
byte[] bytes = ints.SelectMany(BitConverter.GetBytes).ToArray();
Supongo, sin embargo, que sería más lento ...
Si desea una copia bit a bit, es decir, obtenga 4 bytes de una int, luego use Buffer.BlockCopy
:
byte[] result = new byte[intArray.Length * sizeof(int)];
Buffer.BlockCopy(intArray, 0, result, 0, result.Length);
No use Array.Copy
, ya que intentará convertir y no solo copiar. Vea los comentarios en la página de MSDN para más información.
int[] ints = { 1, 2, 3, 4, 5, 6 };
byte[] bytes = ints.Select(x => (byte)x).ToArray();