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
Ir a la versión completa