Comment puis-je convertir une chaîne binaire comme "010011101" en int, et comment convertir un int, comme 5, en une chaîne "101" en C?Convertir une chaîne de format binaire en int, en C
Répondre
Si c'est un problème de travail qu'ils veulent probablement vous de mettre en œuvre strtol
, vous auriez quelque chose comme LOOP:
char* start = &binaryCharArray[0];
int total = 0;
while (*start)
{
total *= 2;
if (*start++ == '1') total += 1;
}
Si vous voulez obtenir la fantaisie vous pouvez utiliser dans la boucle: "? en C "
total <<= 1;
if (*start++ == '1') total^=1;
trouvé encore plus de fantaisie solution..' while (len--) {ret = (ret << 1) | (* bits ++ & 1);} ' –
La fonction strtol
dans la bibliothèque standard prend un paramètre "de base", qui dans ce cas serait 2.
int fromBinary(const char *s) {
return (int) strtol(s, NULL, 2);
}
(premier code C J'ai écrit dans environ 8 ans :-)
@Pointy: Nice code après 8 ans: P :) – t0mm13b
En C, il n'y a pas de littéral "nul" intégré. Il y a une macro, NULL, donc elle doit être en majuscule. En outre, l'argument de chaîne devrait être fait "const", puisque la fonction ne le modifiera pas. – unwind
oh à droite. Moi, j'aurais probablement utilisé "0" après que le compilateur m'ait parlé de l'erreur :-) – Pointy
Je suppose que cela dépend vraiment de quelques questions sur vos chaînes/programme. Si, par exemple, vous saviez que votre nombre ne dépasserait pas 255 (IE vous n'utilisiez que 8 bits ou 8 0s/1s), vous pourriez créer une fonction où vous lui passeriez 8 bits de votre chaîne, la traverseriez et ajouteriez à une somme que vous avez retournée chaque fois que vous frappez un IE. 1 IE si vous frappez le bit pour 2^7 ajouter 128 et le prochain bit que vous frappez était 2^4 ajouter 16.
Ceci est mon idée rapide et sale. Je pense plus et Google pour toi à l'école. : D
pour la 2ème partie de la question, à savoir" comment puis-je convertir un entier, comme 5, une chaîne" 101, essayez quelque chose comme:
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;
}
}
Vous pouvez utiliser les éléments suivants de codage
#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;
}
Utilisez comme ceci:
char c[20];
int s=23;
itoa(s,c,2);
puts(c);
Sortie:
10111
Remarque:' itoa' est une fonction C non standard –
- 1. Comment convertir une chaîne en ascii en binaire en C#?
- 2. convertir la chaîne en int en C++
- 3. Convertir int en chaîne?
- 4. Convertir binaire en int sans convertir.ToInt32
- 5. En C#, Comment convertir une chaîne hexadécimale en int?
- 6. C# binaire en chaîne
- 7. convertir la chaîne [] en int []
- 8. convertir la chaîne en int
- 9. Comment convertir une chaîne en int?
- 10. Comment convertir un nombre entier en chaîne binaire en C#?
- 11. comment convertir décimal en binaire en C++
- 12. Comment convertir une représentation binaire d'une chaîne en une chaîne?
- 13. Convertir une chaîne de base25 à chaîne binaire en Java
- 14. convertir chaîne de format .net en format java chaîne
- 15. Comment convertir chaîne (culture = "en-US"!) Int C# 2005
- 16. Convertir l'image en binaire?
- 17. comment convertir la chaîne en int dans l'objectif c
- 18. C# Comment convertir une chaîne en format Heure et date?
- 19. Convertir hexadécimal en binaire C++
- 20. Convertir un nombre en chaîne binaire
- 21. visual C++: convertir int en pointeur de chaîne
- 22. Comment convertir une chaîne binaire en nombre en Perl?
- 23. C++ Conversion d'une valeur binaire en octets en une chaîne
- 24. Convertir SQL Server signé int en binaire (4)
- 25. Comment convertir une lecture/écriture binaire en lecture/écriture non binaire en C++
- 26. Convertir IntPtr en int * en C#?
- 27. Méthode intelligente pour convertir int en chaîne?
- 28. convertir la chaîne nombre euler à int en C#
- 29. convertir la chaîne en int signé
- 30. Convertir int en tableau d'octets en C?
première moitié de la question est à http://stackoverflow.com/ questions/117844/chaîne-de-conversion-de-1s-et-0s-en-valeur-binaire – Jimmy