¿Cómo convierto una cadena binaria como "010011101" en una int, y cómo convierto un int, como 5, en una cadena "101" en C?Convertir cadena de formato binario a int, en C
Respuesta
Si se trata de un problema de tarea es probable que quieran a implementar strtol
, que tendría un bucle o menos así:
char* start = &binaryCharArray[0];
int total = 0;
while (*start)
{
total *= 2;
if (*start++ == '1') total += 1;
}
Si desea conseguir la suposición que podría utilizar estos en el bucle: "? en C "
total <<= 1;
if (*start++ == '1') total^=1;
encontró una solución aún más sofisticada..' while (len--) {ret = (ret << 1) | (* bits ++ & 1);} ' –
La función strtol
en la biblioteca estándar tiene un parámetro de "base", que en este caso sería 2.
int fromBinary(const char *s) {
return (int) strtol(s, NULL, 2);
}
(primer código C que he escrito en unos 8 años :-)
@Pointy: código agradable después de 8 años: P :) – t0mm13b
En C, no hay un literal "nulo" incorporado. Hay una macro, NULL, por lo que debe estar en mayúscula. Además, el argumento de cadena debe hacerse "const", ya que la función no lo modificará. – unwind
oh correcto. Yo, probablemente hubiera usado "0" después de que el compilador me dijera acerca del error :-) – Pointy
Supongo que realmente depende de algunas preguntas sobre sus cadenas/programa. Si, por ejemplo, sabía que su número no sería superior a 255 (IE solo usaba 8 bits u 8 0s/1s), podría crear una función en la que le entregue 8 bits de su cadena, la recorra y agregue a una suma que devolviste cada vez que tocas un 1. IE si tocas el bit para 2^7 agrega 128 y el siguiente bit que tocaste fue 2^4 suma 16.
Esta es mi idea rápida y sucia. Pienso más y Google para ti mientras estás en la escuela. : D
para la segunda parte de la pregunta, es decir,"¿cómo puedo convertir un int, al igual que 5, a una cadena" 101, intentar algo como:
void
ltostr(unsigned long x, char * s, size_t n)
{
assert(s);
assert(n > 0);
memset(s, 0, n);
int pos = n - 2;
while(x && (pos >= 0))
{
s[ pos-- ] = (x & 0x1) ? '1' : '0'; // Check LSb of x
x >>= 1;
}
}
Usted puede usar la siguiente codificación
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void)
{
int nRC = 0;
int nCurVal = 1;
int sum = 0;
char inputArray[9];
memset(inputArray,0,9);
scanf("%s", inputArray);
// now walk the array:
int nPos = strlen(inputArray)-1;
while(nPos >= 0)
{
if(inputArray[nPos] == '1')
{
sum += nCurVal;
}
--nPos;
nCurVal *= 2;
}
printf("%s converted to decimal is %d\n", inputArray, sum);
return nRC;
}
uso como esto:
char c[20];
int s=23;
itoa(s,c,2);
puts(c);
Salida:
10111
Nota:' itoa' es una función C no estándar –
- 1. ¿Convertir int a cadena?
- 2. ¿Cómo convertir una cadena a ascii en binario en C#?
- 3. C# Convertir cadena decimal a Int
- 4. Convertir binario en escala de grises sin formato a JPEG
- 5. Convertir cadena hexadecimal a int
- 6. Convertir en base 2 cuerdas número binario a int
- 7. Convertir palabras (cadena) a Int
- 8. ¿Convertir imagen a binario?
- 9. Haskell: Convertir Int a cadena
- 10. Convertir cadena a decimal con formato
- 11. Cómo convertir NSInteger a un valor binario (cadena)
- 12. fecha sql convertir a formato de cadena
- 13. Convertir cadena a matriz int usando LINQ
- 14. Cómo convertir un int a una cadena?
- 15. Convertir cadena de dirección IP a binario en Python
- 16. Android convertir color int a hexa Cadena
- 17. Conversión de archivo binario a cadena Base64
- 18. Cómo convertir int a enum en C++?
- 19. Cómo convertir long a int en .net?
- 20. Bytes a binario en C
- 21. opciones de formato de cadena para int en .NET
- 22. ¿Cómo convertir una cadena o entero a binario en Ruby?
- 23. Convertir una cadena (como testing123) A binario En Java
- 24. Convertir a int y el éxito de prueba en C#
- 25. Forma más eficaz de convertir DateTime a formato Int
- 26. Cómo convertir un valor int a cadena en Go?
- 27. archivo binario a cadena
- 28. C# Convertir IntPtr en int
- 29. Convertir términos de erlang a cadena o decodificar erlang binario
- 30. Convertir 4 bytes a int
primera mitad de la cuestión está en http://stackoverflow.com/ questions/117844/converting-string-of-1s-and-0s-into-binary-value – Jimmy