sistema - pasar un numero entero a binario en c++
Convirtiendo cadenas de 1s y 0s en valores binarios (5)
Puede usar std :: bitset (si la longitud de sus bits se conoce en tiempo de compilación)
Aunque con algún programa podrías dividirlo en pedazos y combinarlo.
#include <bitset>
#include <iostream>
int main()
{
std::bitset<5> x(std::string("01011"));
std::cout << x << ":" << x.to_ulong() << std::endl;
}
Estoy tratando de convertir un sting entrante de 1s y 0s de stdin en sus respectivos valores binarios (donde una cadena como "11110111" se convertiría a 0xF7). Esto parece bastante trivial, pero no quiero reinventar la rueda, así que me pregunto si hay algo en las librerías estándar de C / C ++ que ya pueda realizar tal operación.
Puedes usar strtol
char string[] = "1101110100110100100000";
char * end;
long int value = strtol (string,&end,2);
Puede usar Boost Dynamic Bitset:
boost::dynamic_bitset<> x(std::string("01011"));
std::cout << x << ":" << x.to_ulong() << std::endl;
He escrito algunas funciones para esto y tengo licencia bajo LGPL. Puede ser encontrado aquí .
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char * ptr;
long parsed = strtol("11110111", & ptr, 2);
printf("%lX/n", parsed);
return EXIT_SUCCESS;
}
Para números más grandes, hay una versión long long
, strtoll
.