viceversa sacar recursivo recursividad que programa pasar número numeros numero entero dev decimales convierta convertir con como binarios binario c++ binary hex

sacar - ¿Cómo puedo convertir números hexadecimales a binarios en C++?



programa binario a decimal (6)

Esto suena como una tarea, en cuyo caso deberías pedirle ayuda a tu maestra. Solicitar soluciones de tareas desde Internet en realidad no te ayudará a largo plazo (a menos que vayas a la administración de proyectos).

Respondiendo a chustar (el OQ''er) en los comentarios, tendría que aceptar que si entiendes cómo hacerlo, cómo / por qué funciona y cómo resolverlo tú mismo en el futuro, entonces sí, eso sería una cosa buena.

Sin embargo, la respuesta que marcó como "correcta" desmiente ese argumento. No contiene nada más que código, precedido de las palabras "Like So". Está bastante claro que lo que el OQ''er estaba buscando no era una explicación, sino que alguien escribiera su código para él.

Estoy tomando una clase C ++ inicial, y me gustaría convertir letras entre representaciones hexadecimales y binarias. Puedo lograr imprimir los números hexadecimales usando:

for(char c = ''a''; c <= ''z''; c++){ cout << hex << (int)c; }

Pero no puedo hacer lo mismo para binario. No hay std::bin que pueda usar para convertir los números decimales en binarios.


No hay un manipulador binario io en C ++. Debe realizar la cobertura a mano, probablemente mediante el uso de operadores de desplazamiento de bits. La conversión real no es una tarea difícil, por lo que debe estar dentro de las capacidades de un principiante en C ++ (mientras que el hecho de que no esté incluido en la biblioteca estándar puede no ser :))

Editar: muchos otros han puesto ejemplos, así que voy a dar mi método preferido

void OutputBinary(std::ostream& out, char character) { for (int i = sizeof(character) - 1; i >= 0; --i) { out << (character >> i) & 1; } }

Esto también podría ser potencialmente modelado a cualquier tipo numérico.


Por un poco de variedad, también puedes hacerlo usando una tabla de búsqueda de 16 elementos.


Puedes escribir fácilmente un mapeo entre los caracteres hexadecimales y sus ''nibbles'' binarios:

std::string HexCharToNibble( char c ) { switch (c) { case ''0'': return "0000"; case ''1'': return "0001"; //... fill in the rest case ''f'': return "1111"; default: assert(false); return "bad input"; };


Puedes hacer algo como esto:

for(char c = ''a''; c <= ''z''; c++){ // char is 8 bits. print 4 bits // at a time, starting with the MSB for (int i = 4; i>=0; i-=4) { switch (((int)c >> i) & 0xf) { case 0: cout << "0000"; break; case 1: cout << "0001"; break; . . . case 0xf: cout << "1111"; break; } } }


Al igual que:

for(char c = ''a''; c <= ''z''; c++){ std::bitset<sizeof(char) * CHAR_BIT> binary(c); //sizeof() returns bytes, not bits! std::cout << "Letter: " << c << "/t"; std::cout << "Hex: " << std::hex << (int)c << "/t"; std::cout << "Binary: " << binary << std::endl; }