Pregunta:
Convierta una cadena de bits en un valor entero
kimliv
2014-05-12 23:31:24 UTC
view on stackexchange narkive permalink

Tengo una cadena llena con 0 y 1 y me gustaría obtener un número entero de ella:

  String bitString = ""; int Número; int tmp; bitString = ""; para (i = 1; i< = 10; i ++) {tmp = analogRead (A0); cadena de bits + = tmp% 2; retraso (50); } // ahora bitString contiene por ejemplo "10100110" // Number = bitstring to int < ------------- // Al final quiero que la variable Number contenga el entero 166  
¿Cuál es la pregunta? ¿Qué espera que haga este código y qué está haciendo? ¿Qué más has intentado?
@Craig Edité la pregunta. Por ejemplo, si bitString contiene un "10100110", quiero que el programa lo guarde como el decimal 166 en la variable int.
¿Necesitas la cuerda? Puede crear la representación entera directamente.
@Craig también me gustaría imprimir la cadena de bits
Dos respuestas:
#1
+6
Craig
2014-05-13 00:33:06 UTC
view on stackexchange narkive permalink

Si solo necesita la cadena para imprimir, puede almacenar el valor en un número entero y luego usar la función Serial.print (número, BIN) para formatear la salida como un valor binario. Agregar números enteros a cadenas es una operación potencialmente costosa tanto en rendimiento como en uso de memoria.

  int Number = 0; int tmp; for (int i = 9; i> = 0; i--) { tmp = analogRead (A0); Número + = (tmp% 2) << i; delay (50);} Serial.print (Número, BIN);  
¡Sí, su solución parece más eficiente! y hace el trabajo
#2
+4
Doowybbob
2014-05-13 00:14:02 UTC
view on stackexchange narkive permalink

Echa un vistazo a strtoul()

Debería funcionar algo como esto:

unsigned long result = strtoul (bitstring.c_str () , NULL, 2);

Ahora tiene una variable larga que puede convertirse en un int si es necesario.

@kimliv ¿Agregó .c_str () al final de la cadena de bits como Peter señaló anteriormente? c_str () debería devolver un carácter constante *.
¡está funcionando de esa manera!


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...