¿Cómo me gustaría convertir un bytearray a una matriz de bits?¿Convertir matriz de bytes a matriz de bits?
Respuesta
La manera obvia; utilizando el constructor que toma una matriz de bytes:
BitArray bits = new BitArray(arrayOfBytes);
Depende de lo que entendemos por "matriz de bits" ... Si se refiere a una instancia de la clase BitArray
, la respuesta de Guffa debería funcionar bien.
Si usted quiere realmente un conjunto de bits, en forma de un bool[]
por ejemplo, usted podría hacer algo así:
byte[] bytes = ...
bool[] bits = bytes.SelectMany(GetBits).ToArray();
...
IEnumerable<bool> GetBits(byte b)
{
for(int i = 0; i < 8; i++)
{
yield return (b & 0x80) != 0;
b *= 2;
}
}
Su respuesta es más apropiada que la respuesta anterior. El resultado de cos contiene ceros a la izquierda. +1 – Nolesh
public static byte[] ToByteArray(this BitArray bits)
{
int numBytes = bits.Count/8;
if (bits.Count % 8 != 0) numBytes++;
byte[] bytes = new byte[numBytes];
int byteIndex = 0, bitIndex = 0;
for (int i = 0; i < bits.Count; i++) {
if (bits[i])
bytes[byteIndex] |= (byte)(1 << (7 - bitIndex));
bitIndex++;
if (bitIndex == 8) {
bitIndex = 0;
byteIndex++;
}
}
return bytes;
}
Simplemente curioso ... ¿No quiere la función para el otro lado? –
public static byte[] ToByteArray(bool[] byteArray)
{
return = byteArray
.Select(
(val1, idx1) => new { Index = idx1/8, Val = (byte)(val1 ? Math.Pow(2, idx1 % 8) : 0) }
)
.GroupBy(gb => gb.Index)
.Select(val2 => (byte)val2.Sum(s => (byte)s.Val))
.ToArray();
}
Usted puede utilizar BitArray
para crear una corriente de bits de una matriz byte
. Aquí un ejemplo:
string testMessage = "This is a test message";
byte[] messageBytes = Encoding.ASCII.GetBytes(testMessage);
BitArray messageBits = new BitArray(messageBytes);
- 1. ¿Cómo convertir una matriz de bytes a una matriz int?
- 2. matriz de bytes o la matriz de mapa de bits
- 3. convertir mapa de bits en matriz de bytes
- 4. convertir matriz de cadena a matriz de bytes
- 5. Convertir una matriz de cadenas a matriz de bytes
- 6. Convertir matriz de bytes a archivo wav
- 7. Python: convertir cadena a matriz de bytes
- 8. Convertir matriz de bytes a matriz corta en C#
- 9. Convertir matriz de bytes en Bitset
- 10. Leer línea de matriz de bytes (no convertir matriz de bytes a cadena)
- 11. Convertir una matriz de bytes a una clase que contiene una matriz de bytes en C#
- 12. Int matriz de bytes a
- 13. Cómo convertir una matriz de bytes en una matriz int?
- 14. Cómo convertir imágenes en matriz de bytes
- 15. Cómo convertir mapa de bits a matriz de bytes en Mono para Android
- 16. ¿Convertir matriz de bytes de Oracle RAW a System.Guid?
- 17. cómo convertir una matriz de bytes a Stream
- 18. Convertir matriz de bytes a la imagen en WPF
- 19. Convertir cadena JRuby a matriz de bytes Java, y viceversa
- 20. Cómo convertir una matriz de bytes a blob
- 21. ¿Convertir int a una matriz de bytes en C?
- 22. Cómo convertir un entero a matriz de bytes en php
- 23. ¿Cómo convertir NSData a matriz de bytes en iPhone?
- 24. Cómo convertir una matriz de bytes a NSString
- 25. Convertir objeto a matriz de bytes en C#
- 26. Convertir matriz de bytes base64 a una imagen
- 27. ¿Cómo convertir una matriz de bytes int a little endian?
- 28. Cómo convertir una matriz de bytes a Bitmap
- 29. ¿Convertir una matriz de bytes a cadena en Silverlight?
- 30. Convertir matriz de bytes a cadena mediante Transact-SQL
¿Qué tal una matriz de bits preexistente? – Sir