Code Source en C embarqué pour un entier non signé de la chaîne
Sans recourir à la bibliothèque standard utoa, je suis à la recherche pour le code source de utoa afin que je puisse le personnaliser pour chaque projet. J'ai d'entier non signé (32 bits) avec sortie tels que 0xFFFF_FFFF
Je suis également à la recherche pour le code source entier non signé et demi-mot à la chaîne dans un format binaire.
utoa
ne fait pas partie de la bibliothèque C standard. (C'est peut-être une partie de votre mise en œuvre delibc
mais ce n'est pas la norme.)- est-ce un devoir? si oui, veuillez étiqueter comme tel.
- Non ce n'est pas des devoirs à faire, pourquoi tout le monde suppose que c'est le cas!!!.
InformationsquelleAutor riscy | 2011-08-03
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Vous l'appelez avec un pointeur vers la fin de l'appelant-à condition de la mémoire tampon, et la fonction retourne le pointeur vers le début de la chaîne. Le tampon doit avoir une longueur d'au moins
3*sizeof(int)+1
pour être sûr.Bien sûr, cela est facilement adapté à d'autres bases.
Theres beaucoup de ltid source des fichiers facilement trouvé sur google... Qui devrait vous donner ce que vous voulez, par exemple. ltid de opensource.apple.com
Ou de l'écrire à partir de zéro, il n'est pas trop dur.
Qui n'est pas très difficile. Continuer à diviser par 10 et utilisez le reste de mod 10 comme un index dans "0123455679". Vous construisez ce de droite à gauche, de sorte que vous avez à tampon, le résultat et le retour dans le sens inverse:
malloc
comme une réponse à un systèmes embarqués question...static
tampon plutôt que l'appelant a fourni de la mémoire tampon, ce qui n'est pas une bonne chose...)"0123456789"
est un moyen inefficace pour écrire'0'+n
, et ce dernier n'est pas un hack, il est nécessaire de travailler en tant que partie de la langue.'0'+n%10
...)-fPIC
.Cela devrait le faire, c'est zéro plaquettes. Il suffit de changer le type de
n
dans les paramètres de la fonction sera de le faire fonctionner pour tout type entier/taille.La plupart des fonctions mentionnées/suggéré ici utilise le module opérateur%, ce qui est très cher pour un système embarqué.
Donc, à l'aide de diviser par 10 idée est le seul éminent option, je suppose. Ici, il est:
Il y a beaucoup de mise en œuvre de la ltid. C'est l'un d'eux qui prend en compte la base de 2 à 36:
Plus de variations peuvent être trouvés ici qui inclut la vitesse de la performance des implémentations différentes.