Programación General > Visual C++

 Cómo Obtener Los Bits De Un Caracter Ascii?

(1/1)

gatiori:
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:

--- Código: Text --- inline void strbit(string& str,const string& str2){  unsigned i;  unsigned masc = 1<<7;  unsigned char* c =(unsigned char*) str2.c_str();    for(i=1;i<=8;++i)  {    if(*c & masc)    {      str += "1";    }else    {      str += "0";    }      *c <<=1;  }} int main(int argc, char* argv[]){  string s;  string c = "A";  strbit(s,c);        return(0);}  
Saludos.

gatiori:
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...

Navegación

[0] Índice de Mensajes

Ir a la versión completa