C/Visual C - Manejar archivos a nivel de bits

 
Vista:

Manejar archivos a nivel de bits

Publicado por uno (1 intervención) el 19/05/2006 22:30:18
Hola estoy haciendo un visualizador de jpgs y en algunos trozos necesito recorrer el archivo bit a bit ya que la información no esta delimitada en bytes, sino que está compactada en ristras de bits de longitud variable. Por ahí encontré una librería bastante interesante y muy sencilla, pero también necesito poder volver atrás, tal como se puede hacer con el fseek de la stdio, cosa que no proporcionaba la librería en cuestión. Alguien conoce alguna librería?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Sergio Castillo

RE:Manejar archivos a nivel de bits

Publicado por Sergio Castillo (47 intervenciones) el 22/05/2006 18:04:20
Hola, para conocer los valores de un bit de cualquier variable no necesitas una librería, con los operadores binario de C los puedes conocer, ejemplo.

tengo una variable int a=140; Si deseo saber si el bit 7 (8° de 8 que van del 0-7) está encendido sólo aplico un & así

if (a & 128) {}

El bit 8 sería 2 a la 7 es decir 128, el operador & es un y binario, diferente del && lógico. Por lo que hace un y binario así

a=140= 10001100
128= 10000000 &
________________
10000000 =128 Es decir true, pues es diferente de 0

Y así con todos los demás bit de cualquier variable int, char, short, long etc...

Por lo cuál no debes devolverte para leer un bit anterior del archivo, pues lo tienes guardado en el byte que leíste con fgetc(), supongo que eso es lo que usabas.

Si te sirve de algo genial
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sergio Castillo

RE:Manejar archivos a nivel de bits

Publicado por Sergio Castillo (47 intervenciones) el 22/05/2006 18:09:02
Hola, para conocer los valores de un bit de cualquier variable no necesitas una librería, con los operadores binario de C los puedes conocer, ejemplo.

tengo una variable int a=140; Si deseo saber si el bit 7 (8° de 8 que van del 0-7) está encendido sólo aplico un & así

if (a & 128) {}

El bit 8 sería 2 a la 7 es decir 128, el operador & es un y binario, diferente del && lógico. Por lo que hace un y binario así

a=140= 10001100
128= 10000000 &
________________
10000000 =128 Es decir true, pues es diferente de 0

Y así con todos los demás bit de cualquier variable int, char, short, long etc...

Por lo cuál no debes devolverte para leer un bit anterior del archivo, pues lo tienes guardado en el byte que leíste con fgetc(), supongo que eso es lo que usabas.

Si te sirve de algo genial
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Manejar archivos a nivel de bits

Publicado por Juan (68 intervenciones) el 22/05/2006 20:11:09
Exacto, eso se llama enmascaramiento de bits. Te mando unos enlaces por si quieres conocer mas del tema

http://www.microsoft.com/spanish/msdn/articulos/archivo/050503/voices/vbconVisualBasic.asp

http://es.wikipedia.org/wiki/M%C3%A1scara_(inform%C3%A1tica)

http://www.totex.cl/index.php?articulo=5

http://www.geocities.com/CollegePark/Quad/8901/cap02.htm
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar