Come converto una stringa binaria come "010011101" in un int, e come faccio a convertire un int, come 5, in una stringa "101" in C?Converti stringa di formato binario in int, in C
risposta
Se si tratta di un problema di compiti a casa che probabilmente vogliono di implementare strtol
, si avrebbe un qualcosa di ciclo come questo:
char* start = &binaryCharArray[0];
int total = 0;
while (*start)
{
total *= 2;
if (*start++ == '1') total += 1;
}
Se si voleva ottenere l'immaginazione si potrebbe usare questi nel ciclo: "? in C "
total <<= 1;
if (*start++ == '1') total^=1;
ha trovato una soluzione ancora più divertente ... mentre (len--) {ret = (ret << 1) | (* bit ++ & 1);} ' –
La funzione strtol
nella libreria standard prende un parametro di "base", che in questo caso sarebbe 2.
int fromBinary(const char *s) {
return (int) strtol(s, NULL, 2);
}
(primo codice C che ho scritto in circa 8 anni :-)
@Pointy: Nice code dopo 8 anni: P :) – t0mm13b
In C, non esiste un letterale "null" incorporato. C'è una macro, NULL, quindi ha bisogno di essere upper-cased. Inoltre, l'argomento stringa dovrebbe essere reso "const", poiché la funzione non lo modificherà. – unwind
oh giusto. Io probabilmente avrei usato "0" dopo che il compilatore mi ha detto dell'errore :-) – Pointy
Credo che in realtà dipenda da alcune domande sul tuo programma/stringhe. Se, ad esempio, sapessi che il tuo numero non sarebbe più grande di 255 (IE stavi usando solo 8 bit o 8 0s/1s), potresti creare una funzione in cui devi passarlo a 8 bit dalla tua stringa, attraversarlo e aggiungere ad una somma che hai restituito ogni volta che colpisci un 1. IE se colpisci il bit per 2^7 aggiungi 128 e il prossimo bit che colpisci è 2^4 add 16.
Questa è la mia idea veloce e sporca. Penso di più e Google per te a scuola. : D
per la seconda parte della domanda, vale a dire" come faccio a convertire un int, come 5, ad una stringa" 101, provare qualcosa di simile:
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;
}
}
È possibile utilizzare il seguente codifica
#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;
}
Usa come questo:
char c[20];
int s=23;
itoa(s,c,2);
puts(c);
uscita:
10111
Nota:' itoa' è una funzione C non standard –
- 1. Converti int in stringa?
- 2. Converti stringa in int-objective c
- 3. Converti la rappresentazione di stringa del numero binario in int in C#
- 4. Converti stringa esadecimale in int
- 5. Converti l'immagine in binario?
- 6. Converti parole (stringa) in Int
- 7. Converti doppio in stringa C++?
- 8. Converti stringa in stringa esadecimale in C#
- 9. Converti stringhe tra il formato esadecimale e il formato binario
- 10. Converti sezione stringa in int in Rust
- 11. Converti stringa in formato SVG in Base64
- 12. Converti stringa esadecimale (char []) in int?
- 13. Converti byte in Int/uint in C
- 14. Converti stringa pyspark in formato data
- 15. Converti stringa di campo di input in Int in Swift
- 16. Converti int in CGFloat
- 17. Converti in formato valuta
- 18. Converti oggetto di stringa JSON in C#
- 19. Converti stringa in data/ora utilizzando C#
- 20. Converti stringa in datetime C#
- 21. Converti array in stringa? C#
- 22. mysql seleziona int come valuta o converti in formato valuta?
- 23. Converti IEnumerable <int> in int []
- 24. Converti decimale in binario in python
- 25. Converti int in array di byte in C?
- 26. stringa Converti in int in Hibernate criterio ordine
- 27. formato una stringa in C
- 28. Converti binario in scala di grigi crudo in JPEG
- 29. Leggere e scrivere int in un file binario in C++
- 30. Converti una stringa in Colore in C#
prima metà della questione è a http://stackoverflow.com/ domande/117844/converting-string-of-1s-and-0s-in-binary-value – Jimmy