/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

como crear un archivo binario

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
leosa



Registrado: 02 Abr 2007
Mensajes: 7

MensajePublicado: 28/04/2007 6:32 pm
Título: como crear un archivo binario

hola foristas, tengo esta duda


tengo que hacer un programa, leer de un archivo binario un .dat, las instrucciones me indican que solo debo leerlo, no tengo que cargar los datos en el .dat, me explico mejor, los datos ya estan cargados en el .dat, solo tengo que leerlo para obtener los datos


mi duda va es que si fuera un .txt, solo abriria un bloc de notas en mi pc, escribo los datos de ejemplo ahi, y leo este .txt del programa, pero este programa me indica a leer de un .dat, aqui es donde les pido consejos o alguna sugerencia, se puede hacer un .dat como hice con el .txt que solo abri el bloc de notas?, como se hace un .dat para meter los datos de ejemplos del programa?

saludos de antemano
Volver arriba
daltomi



Registrado: 28 Abr 2007
Mensajes: 9

MensajePublicado: 28/04/2007 8:33 pm
Título:

Hola.
El hecho de que un arch. tenga extensión .dat no significa que debe o puede tener datos en formato binario o hexadecimal para ser exactos.

Ahora bien, podes usar el programa Notepad (Blog de notas) de Windows para abrir un archivo .dat o crear un archivo nuevo, ingresarle los datos que quieras, ya sea texto plano o hexadecimal y luego guardarlo como .dat. Sólo ten en cuanta que debes colocar comillas( " ") entre el titulo que le coloques al archivo, esto para que no lo guarde com archivo.dat.txt, me explico:

Abro el Notepad, escribo cualquier dato, no importa, luego, voy al menú Archivo->Guardar como... en la casilla Nombre del Archivo ingreso: "mi archivo.dat" y guardo.
No te olvides de las comillas.
Si tú problema es crear un programa para leer un archivo hexadecimal, te pidos disculpas, pero no entendí exactamente tú problema. En ese caso, puedo dejarte, luego, el código para dicho tema.

Saludos. Very Happy
Volver arriba
leosa



Registrado: 02 Abr 2007
Mensajes: 7

MensajePublicado: 30/04/2007 4:46 pm
Título:

daltomi gracias por tu respuesta, ese era mi problema

muchas gracias por tu consejo
saludos
Volver arriba
Anthrax



Registrado: 14 May 2006
Mensajes: 32

MensajePublicado: 01/05/2007 2:34 pm
Título:

Y es normal que si desde un programa(hecho en c) abro un archivo en modo binario("rb") el cual contiene texto,y presento por pantalla su contenido me lo muestre en forma de texto y no en digitos binarios??
Volver arriba
daltomi



Registrado: 28 Abr 2007
Mensajes: 9

MensajePublicado: 01/05/2007 9:36 pm
Título:

Hola.
Hay tener en cuenta que un archivo de "texto con extensión .txt" es una designación formal, un rago de números de la tabla ASCII que representan el abecedario, etc , pero dentro, en un archivo de "texto", los valores estan representados en formato hexadecimal. Por ejemplo:
Si un archivo de "texto" contiene los siguiente: A 4 1
en verdad, estos valores están representados en formato hexadecimal:
41 34 31

es decir:
41 = A, 34 = 4, 31 = 1

Un archivo "binario" quiere decir que contiene "caracteres especiales o de control", pero puede tranquilamente contener "caracteres de texto".

Un archivo, cualquiera sea su extensión , contiene datos, estos datos se basan en números representados en la tabla ASCII. Además muchos archivos poseen un formato creado por un autor y entendible por él.

El hecho de utilizar, en la función fopen, las letras "rb"(apertura en binario) o "r"(apertura en texto), es para posterior uso de funciones como fseek, fpos, etc. Tienen que ver con la posición del "cursor" dentro del stream.
Yo, personalmente, para abrir cualquier archivo, lo abro como binario.

Para mostrar dígitos binarios deberás tomar un número y convertirlo a binario he ir representado en la pantalla.
Un ejemplo para c++ utilizando la libreria iostream, seria:
Código:

void VisualizaBits(unsigned numero)
{
   unsigned i;
   unsigned mascara = 1 << 7;
   cout.width(6); cout < numero <<" = ";
   for(i=1;i<=8;i++)
   {
      if(numero & mascara)
             cout.put('1');
      else
             cout.put('0');
             numero <<= 1;
             cout.put('  ');
    }
    cout << endl;
}

Saludos.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 2895
Ubicación: Mexico

MensajePublicado: 02/05/2007 6:15 am
Título:

Anthrax escribió:
Y es normal que si desde un programa(hecho en c) abro un archivo en modo binario("rb") el cual contiene texto,y presento por pantalla su contenido me lo muestre en forma de texto y no en digitos binarios??

La diferencia principal entre los modos binario y texto es que el segundo maneja de forma transparente el caracter (o los caracteres) utilizado(s) para indicar el avance de linea.

Por ejemplo un archivo puede contener una sola linea con el siguiente formato:
Código:
"foo bar foozle\n" (Linux)

-O-

"foo bar foozle\r" (Mac)

-O-

"foo bar foozle\r\n" (MS-DOS y MS Windows)

Pero eso no importaria ya que si abrimos el archivo en modo texto lo que obtenemos es "foo bar foozle\n" sin importar el entorno. Y cuando imprimimos esa linea en un archivo de texto la biblioteca estandar de C se encarga de sustituir el '\n' por lo que sea apropiado en el entorno.

Esto no aplica si el archivo se abre en modo binario, si asi sucede somos nosotros los que debemos encargarnos del manejo del caracter de avance de linea.

Salvo esta excepcion (manejo "transparente" del caracter '\n') no hay diferencia entre abrir un archivo que solo contenga cadenas de texto en modo "b" o "t".

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
Anthrax



Registrado: 14 May 2006
Mensajes: 32

MensajePublicado: 02/05/2007 2:30 pm
Título:

Muchas gracias por las respuestas chicos,tratare de investigar mas sobre el tema.
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com