2017-03-07 6 views
0

J'ai reçu une valeur int de 0 à 255 et je veux convertir cette valeur en hexadécimal ou en binaire afin de pouvoir l'utiliser dans un registre de 8 bits (PIC18F uC). Comment puis-je faire cette conversion? J'ai essayé d'utiliser la fonction IntToHex à partir de la bibliothèque de conversion, mais la sortie de cette fonction est une valeur char, et à partir d'ici je me suis coincé. J'utilise mikroc pour pic. Par où commencer? Merci!Conversion de int en binaire ou hexadécimal dans mikroc

+2

Incertain ce que vous demandez, bits est de bits. Montrez-nous un exemple spécifique de ce que vous voulez faire par programme. J'ai cette valeur dans cette base que j'obtiens de cette manière et je veux la convertir à cette valeur dans cette base sous cette forme donc je peux l'utiliser ici ... –

+1

Un nombre de 0 à 255 peut tenir dans un registre de 8 bits , c'est la seule chose dont tu te soucies. Apprendre les limites numériques des entiers 8/16 bits signés/non signés. Hexadécimal, octal, décimal ou binaire - ce ne sont que des * représentations * de ce même nombre entier. La valeur que vous avez est (généralement) encodée dans le microcontrôleur comme un nombre * binaire *, et cela ne devrait vous concerner que lorsque vous voulez effectuer des opérations au niveau du bit (extraire, masquer ou déplacer des bits individuels). Le seul endroit où vous voudriez changer la * représentation * en hex/oct/dec serait lors de l'affichage de la valeur à l'utilisateur. – Groo

+0

En d'autres termes, 'IntToHex' renvoie probablement un pointeur' char' **, c'est-à-dire une chaîne de caractères, car il convertit un entier en une représentation textuelle pour l'affichage. Par exemple, si votre valeur est '255',' IntToHex' retournera probablement une chaîne terminée par un caractère nul '' FF'' '. Mais pour attribuer la valeur au registre, il suffit d'attribuer la ** valeur réelle **, pas le tableau de caractères. – Groo

Répondre

0

Ceci est un problème courant. Beaucoup ne comprennent pas que, Décimal 15 est le même que Hex F est le même que Octal 17 est le même que Binaire 1111.

Différents systèmes de nombre sont pour les humains, pour le processeur, tout est binaire!

Quand OP dit,

j'ai eu une valeur int de 0 à 255 et je veux convertir cette valeur à hexadécimal ou binaire afin que je puisse l'utiliser dans un registre 8 bits (PIC18F uC).

Il reflète ce malentendu. Probablement parce que le débogueur est configuré pour afficher des valeurs "décimales" et que le code/la feuille de données montre une valeur hexadécimale pour les opérations de registre. Donc, quand vous obtenez la valeur "int" de 0 à 255, vous pouvez directement écrire ce nombre dans le registre de 8 bits. Vous n'êtes pas obligé de le convertir en hex. Hex est juste une représentation qui rend la vie de l'homme facile.

Qu'est-ce que vous pouvez faire est - c'est une bonne pratique -

REG_VALUE = (unsigned char) int_value;