Comment afficher le code binaire du contenu d'une variable quelconque - C - Programmation
Marsh Posté le 05-03-2008 à 15:56:50
Et bien, ça c'est de la réponse concise.
Hélas, le format %b n'existe pas ! Par contre le format "%X" existe et affiche le codage en écriture hexadécimal d'une variable, mais là encore, seulement pour un int.
Marsh Posté le 05-03-2008 à 16:20:26
Effectivement j'ai dit n'importe quoi, dsl.
J'aurais pourtant juré que ça existait...
Marsh Posté le 05-03-2008 à 18:47:40
Et un truc du style :
Code :
|
Marsh Posté le 05-03-2008 à 18:54:42
ca veut quand même bien rien dire :E
Y a pas de format pour le binaire, faut te faire une chtite fonction de conversion base2->base10 et creer la chaine à la volée.
Marsh Posté le 05-03-2008 à 19:27:34
Tu peux convertir en base 2 que des entiers, tu ne peux pas faire ça sur les flottants par exemple.
Ensuite, ton "#define TYPE int" c'est mal. Utilise typedef, et ce pour une raison simple :
#define TYPE int*
=> que se passe-t-il si tu écris : "TYPE a, b, c" ?
De plus, tu utilises un magic number : 8. Je trouve mieux d'utiliser CHAR_BITS dans limits.h qui définit le nombre de bits de la plus petite entité allouable de la machine pour laquelle tu compiles. Ok >99% des machines actuelles ont un byte == 8 bits, mais ce n'était pas le cas avant, et rien ne dit que ça le sera dans le futur.
Marsh Posté le 05-03-2008 à 19:31:49
Tu peux faire un truc comme ça par exemple
Code :
|
Marsh Posté le 06-03-2008 à 00:35:51
En fait, par je ne sais quel miracle, mon fil donné en lien au début a été relancé et je crois bien qu'une solution est sur le point d'être trouvée.
Bravo à Trap D, car je crois bien qu'il a trouvé la façon de si prendre. En tout cas, c'est cette façon là qu'on m'a suggérée sur le fil en question. Nous verrons si cela aboutit. Vous avez le lien et vous pourrez suivre la chose. Je garde un oeil quand même sur ce forum.
Merci pour vos réponses.
François
Marsh Posté le 06-03-2008 à 09:20:57
Par le truchement d'un memcpy, une solution propre vous obtiendriez (Yoda m'habite).
Marsh Posté le 06-03-2008 à 09:38:03
"un", "VALEUR_DE_VAR", "TYPE", toi tu sais choisir tes noms y'a pas à dire.
Marsh Posté le 06-03-2008 à 11:59:48
_darkalt3_ a écrit : Effectivement j'ai dit n'importe quoi, dsl. |
Pas en standard. C'est une extension supportée par certains compilateurs... (J'ai oui-dire qu'un KEIL 51 faisait ça...)
Marsh Posté le 06-03-2008 à 12:08:41
Emmanuel Delahaye a écrit : |
Ok merci
Je dirai aussi selon mes souvenirs un peu flous que j'ai dû croiser ça sous environnement microsoft ...
Marsh Posté le 06-03-2008 à 12:13:12
Trap D a écrit : Tu peux faire un truc comme ça par exemple
|
est-ce que ça peux poser de problème d'alignements ce genre de trucs ?
Marsh Posté le 06-03-2008 à 13:50:11
Taz a écrit : |
A quel type de problème penses-tu ?
Marsh Posté le 06-03-2008 à 14:43:25
Trap D a écrit : A quel type de problème penses-tu ? |
à rien de particulier, je suis entrain de lire des docs, savoir si un char pourrait avoir une contrainte d'alignement plus forte / incompatible qu'un double.
Marsh Posté le 08-03-2008 à 00:05:53
Taz a écrit : |
un char est aligné avec tout par définition !
Marsh Posté le 22-03-2008 à 20:07:13
ReplyMarsh Posté le 22-03-2008 à 20:29:13
Taz a écrit :
|
Rationale C99 : http://www.open-std.org/jtc1/sc22/ [...] eV5.10.pdf
Citation :
6.5.4 Cast operators |
Marsh Posté le 05-03-2008 à 15:42:19
Bonjour à tous,
Je crois que le titre est très clair. J'ai tenté ce code :
Est-il correct ? etc.
Il ne marche que pour une variable de type int. Il plante pour une variable de type float par exemple. Or le titre est clair : "comment afficher le code binaire du contenu d'une variable quelconque", donc par exemple de type float.
En fait, j'ai déjà eu une discussion là dessus sur un autre forum : ici. Mais j'ai l'impression que ce fil est terminé et je reste un peu sur ma faim. C'est pourquoi je tente le coup ici.
Merci d'avance.
François
PS : attention, je débute
Message édité par SiscoL le 05-03-2008 à 15:50:15