Foros del Web » Programación para mayores de 30 ;) » C/C++ »

archivos de 5 bits de unidad

Estas en el tema de archivos de 5 bits de unidad en el foro de C/C++ en Foros del Web. quiero crear archivos lo mas livianos poslibles (q ocupen poca memoria) nesesito crear un archivo que almacene valores consecutivos, pero esos valores solo pueden variar ...
  #1 (permalink)  
Antiguo 16/01/2011, 15:06
 
Fecha de Ingreso: septiembre-2010
Mensajes: 137
Antigüedad: 14 años, 3 meses
Puntos: 0
archivos de 5 bits de unidad

quiero crear archivos lo mas livianos poslibles (q ocupen poca memoria)

nesesito crear un archivo que almacene valores consecutivos, pero esos valores solo pueden variar entre 0 a 31, por lo que lo mas eficiente seria almacenar un valores cada 5 bites.

por eso quiero ordenar la informacion de a 5 bits en lugar de 8.

en internet solo encuentro funciones para trabajar en modo texto, pero yo nesesitaria hacerlo en modo binario.

Hay funciones que me permitan leer y escrivir los bites de un archivo?
  #2 (permalink)  
Antiguo 17/01/2011, 07:50
 
Fecha de Ingreso: junio-2006
Ubicación: España
Mensajes: 122
Antigüedad: 18 años, 6 meses
Puntos: 2
Respuesta: archivos de 5 bits de unidad

con el fopen puedes indicarle de leer en binario con la opcion "b", pero tambien tienes que poner delante de esta letra r para leer, w para escribir... aqui tienes un ejemplo
__________________
Twitters de famosos
  #3 (permalink)  
Antiguo 17/01/2011, 09:58
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 14 años, 1 mes
Puntos: 32
Respuesta: archivos de 5 bits de unidad

Hola:

Me parece q lo q Alfonso quiere saber es si existe alguna forma de escribir hacia un fichero 5 bits en vez de 1 byte (8 bits).
Lamentablemente no existe forma de hacer eso.
En mi opinión puedes hacer 2 cosas.
- Escribir 1 byte completo para cada número, donde solamente los últimos 5 bits son los q te interesan, los otros 3 bits no se tendrían en cuenta para nada (podrías dejarlos en 0). De esta forma no estarías ahorrando nada de espacio, pero la programación se hace mucho más sencilla.
- Escribir todos los número como un arreglo continuo de bytes donde cada número puede estar en 1 o más bytes y completar con cualquier valor el último byte q escribas.
Ejemplo:
Escribir 30, 22, 17:
30 = 11110
22 = 10110
17 = 10001
Escribirías 2 bytes:
11110101 1010001X (X puede ser cualquier valor, al final será ignorado)

El problema es q programar esto es un poco más complicado, incluye hacer shifts (>> , <<) de bits y or lógicos (|).

saludos;

Nup_

Etiquetas: unidad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:21.