none
Guardar bit en un Txt RRS feed

  • Pregunta

  • Hola Buenas tardes.

    Este codigo funciona bárbaro

    BitArray codificar; //ya viene con True False
    
    foreach (bool bit in codificar)
                {
                    //Console.Write((bit ? 1 : 0) + "");
                    if (bit == true)
                        codificacionEn01 += "1";
                    else
                        codificacionEn01 += "0";
                }
    
                System.IO.File.WriteAllText(txtbox_destino.Text, codificacionEn01);

    el BitArray "codificar" es el que tiene toda la coficacion en true false true true .. etc

    el string "cofificacionEn01" convierto los true y false en 1 y 0, osea que paso de bits a byte

    Mi problema que guardo BYTE y no BIT

    Osea que de un archivo de 40KB, cuando hago este proceso me pasa a 180KB, y justamente debería pasar lo contrario. Porque el programa supuestamente es un compresor :P


    martes, 27 de noviembre de 2012 23:40

Respuestas

  • El constructor de un bitArray toma un arreglo de booleanos, de bytes o de enteros, y lo convierte a una array de bits (aunque tal cosa no exista).

    Si quieres guardat ese array, haces

    byte[] a = new byte[(7 + codificar.Count)/8];
    			
    codificar.CopyTo(a, 0);
    FileStream fs = new FileStream(txtbox_destino.Text, FileMode.OpenOrCreate, FileAccess.Write);
    			
    fs.Write(a, 0, a.Length);
    fs.Close();
    

    • Propuesto como respuesta webJoseModerator miércoles, 28 de noviembre de 2012 2:44
    • Marcado como respuesta patriotaSJ miércoles, 28 de noviembre de 2012 3:46
    miércoles, 28 de noviembre de 2012 1:59

Todas las respuestas

  • Hola PatriotaSJ,

    Por supuesto que es más pesado, has pasado de tener un BitArray a una cadena de strings, donde cada booleano ha pasado a ocupar un byte.


    @XaviPaper
    http://geeks.ms/blogs/xavipaper

    martes, 27 de noviembre de 2012 23:47
  • alli usas

    File.WriteAllText

    estas guardando texto, no bits

    si quiere guardar byte o bit podrias serializar  a binario

    Binary Serialization

    no uses texto para guardar informacion, define una clase con propiedades en el tipo de dato correcto, si es una propiedad del tipo bool definala de esa forma y luego serialzia a binario

    mientras uses texto no aplciara lo que comentas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 28 de noviembre de 2012 0:04
  • El constructor de un bitArray toma un arreglo de booleanos, de bytes o de enteros, y lo convierte a una array de bits (aunque tal cosa no exista).

    Si quieres guardat ese array, haces

    byte[] a = new byte[(7 + codificar.Count)/8];
    			
    codificar.CopyTo(a, 0);
    FileStream fs = new FileStream(txtbox_destino.Text, FileMode.OpenOrCreate, FileAccess.Write);
    			
    fs.Write(a, 0, a.Length);
    fs.Close();
    

    • Propuesto como respuesta webJoseModerator miércoles, 28 de noviembre de 2012 2:44
    • Marcado como respuesta patriotaSJ miércoles, 28 de noviembre de 2012 3:46
    miércoles, 28 de noviembre de 2012 1:59
  • Walter, sos un capo. Era lo que necesitaba!
    miércoles, 28 de noviembre de 2012 3:47