Quiero hacer un método que tome cualquier archivo y lo lea como una matriz de 0 y 1, es decir, su código binario. Quiero guardar ese código binario como un archivo de texto. ¿Me puedes ayudar? Gracias.¿Cómo leer el archivo binario en C#?
Respuesta
versión rápida y sucia:
byte[] fileBytes = File.ReadAllBytes(inputFilename);
StringBuilder sb = new StringBuilder();
foreach(byte b in fileBytes)
{
sb.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}
File.WriteAllText(outputFilename, sb.ToString());
@Andrey: ver "rápido y sucio". Obviamente, en producción, algo que use flujos de archivos sería mucho mejor. La parte importante es la conversión de bytes a cadenas binarias. –
Bueno, leerlo no es difícil, solo use FileStream para leer un byte []. Convertirlo en texto no es realmente posible o significativo a menos que convierta los 1 y 0 a hex. Eso es fácil de hacer con la sobrecarga BitConverter.ToString (byte []). En general, desearía volcar 16 o 32 bytes en cada línea. Puede usar Encoding.ASCII.GetString() para tratar de convertir los bytes a caracteres. Un ejemplo de programa que hace esto:
using System;
using System.IO;
using System.Text;
class Program {
static void Main(string[] args) {
// Read the file into <bits>
var fs = new FileStream(@"c:\temp\test.bin", FileMode.Open);
var len = (int)fs.Length;
var bits = new byte[len];
fs.Read(bits, 0, len);
// Dump 16 bytes per line
for (int ix = 0; ix < len; ix += 16) {
var cnt = Math.Min(16, len - ix);
var line = new byte[cnt];
Array.Copy(bits, ix, line, 0, cnt);
// Write address + hex + ascii
Console.Write("{0:X6} ", ix);
Console.Write(BitConverter.ToString(line));
Console.Write(" ");
// Convert non-ascii characters to .
for (int jx = 0; jx < cnt; ++jx)
if (line[jx] < 0x20 || line[jx] > 0x7f) line[jx] = (byte)'.';
Console.WriteLine(Encoding.ASCII.GetString(line));
}
Console.ReadLine();
}
}
Gracias por su respuesta. Hmmm ... algo no parece funcionar, ya que no estoy recibiendo los 0s y 1s. En cambio, obtengo el mismo efecto que si quisiera abrir un archivo en el bloc de notas. – Boris
Sí lo haces, están codificados en hexadecimal. No es lo mismo que verías en el bloc de notas. Información general: http://en.wikipedia.org/wiki/Hexadecimal –
Este método lee el archivo, ¿puede proporcionar un método que escriba el binario en el archivo o escriba los datos binarios en el archivo y luego los convierta en hexadecimal para volver a leer el ¿De qué manera lo tienes aquí? – shawn
Usted puede utilizar BinaryReader para leer cada uno de los bytes, a continuación, utilizar BitConverter.ToString(byte[]) para descubrir cómo cada uno está representado en binario.
Puede utilizar esta representación y write en un archivo.
Gracias por su respuesta. – Boris
uso sencillo FileStream.Read
luego imprimirlo con Convert.ToString(b, 2)
Gracias por su respuesta. – Boris
- 1. Bash Script - Leer archivo binario
- 2. leer un archivo binario (pitón)
- 3. Directamente leer archivo binario grande en C# w/a copiar
- 4. ¿Cómo leer el archivo XML en C#?
- 5. Leer datos estructurados del archivo binario -?
- 6. C: leer el archivo binario en la memoria, alterar el búfer, escribir el búfer en el archivo
- 7. Lea el archivo binario en una estructura
- 8. ¿Cuál es el mejor método para leer un doble de un archivo binario creado en C?
- 9. C# leer continuamente el archivo
- 10. ¿Cómo leer un archivo binario en c? (video, imágenes o texto)
- 11. C#, lea las estructuras del archivo binario
- 12. ¿Cómo se puede leer el contenido de un archivo binario en una cadena en Clojure?
- 13. escribiendo entero en archivo binario (C++)
- 14. C++ Leer archivo hasta el espacio
- 15. Cómo leer el archivo abierto de Excel en C#
- 16. archivo binario a cadena
- 17. Escribir y leer el objeto de clase en y desde el archivo binario
- 18. ¿Puede Fortran leer los bytes directamente desde un archivo binario?
- 19. Modo de archivo para crear + leer + anexar + binario
- 20. Python leer el binario desde la posición específica
- 21. Escribir en el medio de un archivo binario existente C++
- 22. Escribir archivo binario en Ruby
- 23. No puedo leer MySQL registro binario
- 24. ¿Cómo leer el archivo .class?
- 25. Leyendo y escribiendo en el medio de un archivo binario en C/C++
- 26. ¿Cómo comprobar si el archivo es binario?
- 27. Convertir el archivo Intel HEX en el archivo binario
- 28. Cómo leer el archivo XML en Android
- 29. ¿Cómo leer todo el archivo en Ruby?
- 30. ¿Cómo leer el archivo csv en android?
Su pregunta no es clara. ¿Cómo deberían ser exactamente los dos archivos? – SLaks
Creo que quiere almacenar el patrón de bits de un archivo en un archivo de texto. – Oded
¿El archivo de origen es binario o está codificado (textual, ya sea como ASCII, UTF-8, UTF-16, etc.)? En otras palabras, si abre el archivo en un editor de texto como el Bloc de notas, ¿ve ceros y unos? – Pat