• Viernes 1 de Noviembre de 2024, 08:25

Autor Tema:  Cómo Obtener Los Bits De Un Caracter Ascii?  (Leído 1911 veces)

gatiori

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Cómo Obtener Los Bits De Un Caracter Ascii?
« en: Sábado 16 de Junio de 2007, 00:53 »
0
Hola que tal?

A ver si me explico:
Tengo unas "imagenes" de 16x16 pixels hechas en blanco y negro (o sea ceros y unos) y están constituidas de una variable string de 32 caracteres por ejemplo:

0000111111100000
0011000000010000
0010000000001100
0100000000000010
1000100000100010
1000000000000010
1000000000000001
1001000000001001
1001000000001001
1001000000001001
1100100000010001
0010010000100011
0011001111000100
0000100000011000
0000010000100000
0000001111000000

Cada imagen se parece a ésto en la variable string: q=%"/hd("gsbi)/·$ddf&ecf34%·$34"

Cada dos caracteres tengo 16 bits y quiero obtener los bits de un caracter por ejemplo del caracter "A" (65 en ASCII) obtener "01000001" a una variable string.

Apenas comienzo a entender el C++ y no se cómo hacerlo. Alguien me puede orientar?

daltomi

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Cómo Obtener Los Bits De Un Caracter Ascii?
« Respuesta #1 en: Sábado 16 de Junio de 2007, 08:56 »
0
Código: Text
  1.  
  2. inline void strbit(string& str,const string& str2)
  3. {
  4.   unsigned i;
  5.   unsigned masc = 1<<7;
  6.   unsigned char* c =(unsigned char*) str2.c_str();
  7.  
  8.   for(i=1;i<=8;++i)
  9.   {
  10.     if(*c & masc)
  11.     {
  12.       str += "1";
  13.     }else
  14.     {
  15.       str += "0";
  16.     }
  17.       *c <<=1;
  18.   }
  19. }
  20.  
  21. int main(int argc, char* argv[])
  22. {
  23.   string s;
  24.   string c = "A";
  25.   strbit(s,c);
  26.         return(0);
  27. }
  28.  
  29.  

Saludos.

gatiori

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Cómo Obtener Los Bits De Un Caracter Ascii?
« Respuesta #2 en: Martes 19 de Junio de 2007, 17:48 »
0
Ok Gracias!!!
 me ha servido mucho, yo al principio tenía la idea de obtener del caracter, el valor ascii y con este numero hacer un loop de dividirlo entre dos hasta llegar a cero, por ejemplo del caracter "A" sería obtener en ascii el valor 65 y luego dividir en tre dos muchas veces, con cada rsultado, si obtengo un número entero, entonces agrego un cero a mi string, y si obtengo fracción, entonces agrego un uno a la cadena, cuando es así, tendría que eliminar la fracción y retomar el entero para volver a dividir por 2....

No se si esto funcione porque nunca supe como obtener el valor asii, pero con el ejemplo anterior, me funcionó. Gracias...