Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
705 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  binaire en c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

binaire en c++

n°723583
damondef
Heu...
Posté le 12-05-2004 à 16:58:04  profilanswer
 

Salut à tous je voudrais simplement stocker du binaire. (Pas des caractère!) juste du binaire je ne connais pas la commande car en fait y faudrais que je code 11100000 qui équivaux à 224 en décimal mais qui n'a pas d'équivalent dans la norme ASCII.
Ce serais pour le placer dans un tableau. Comment dire au C++ qu'il "travaille" avec du binaire???
Merci  :bounce:

mood
Publicité
Posté le 12-05-2004 à 16:58:04  profilanswer
 

n°723588
jesus_chri​st
votre nouveau dieu
Posté le 12-05-2004 à 16:59:22  profilanswer
 

classe bitset de la STL
regarde dans n'importe quelle bonne doc, la MSDN si t'as rien

n°723597
damondef
Heu...
Posté le 12-05-2004 à 17:02:24  profilanswer
 

ben en fait g chercher dans la msdn mais y'a 10 millions de références... T'as pas un ptit exemple plutot??? STP???

n°723599
Taz
bisounours-codeur
Posté le 12-05-2004 à 17:03:06  profilanswer
 

std::vector<bool>
 
ou tout autre conteneur : vector et bitset ont un stockage optimisé

n°723605
damondef
Heu...
Posté le 12-05-2004 à 17:06:42  profilanswer
 

oula!! ça m'a l'air chaud... Dsl mais g rien pigé (dsl d'etre lourd à comprendre...)je suis un ptit novice... Tu peux me donner un exemple stp???

n°723618
Taz
bisounours-codeur
Posté le 12-05-2004 à 17:10:52  profilanswer
 

std::vector<bool> mes_cent_bits_à_zéro(100, False);
 
ou alros avec bitset (documente toi)
ou valarray<bool> (documente toi)

n°723628
damondef
Heu...
Posté le 12-05-2004 à 17:15:54  profilanswer
 

ouais ok mais y'a pas un truc plus simple pour dire à Mr C++ que :
char [] = "11100000" est du binaire? Faire un tableau d'élément binaires???

n°723642
Taz
bisounours-codeur
Posté le 12-05-2004 à 17:21:39  profilanswer
 

tu peux pas
 
à toi de faire une sequence de quelque chose que tu considères comme du binaire
 
genre
 
bool octet[8];
 
mais ça marche autant avec tout autre type entier

n°723665
damondef
Heu...
Posté le 12-05-2004 à 17:29:07  profilanswer
 

c nul... Il aurait pu pensser a tous le monde le bjarne brosburg... Merci qd meme!

n°723678
Taz
bisounours-codeur
Posté le 12-05-2004 à 17:33:50  profilanswer
 

mais tu racontes n'importe quoi ... on te dit que ça existe dans tous les sens, et que le binaire n'est qu'une vue de l'esprit. tout est binaire :  
 
int  i = 0340; -> ça fait exactement ce que tu demandes  
 
 
à toi d'apprendre un peu avant de critiquer


Message édité par Taz le 12-05-2004 à 17:35:16
mood
Publicité
Posté le 12-05-2004 à 17:33:50  profilanswer
 

n°723711
damondef
Heu...
Posté le 12-05-2004 à 17:44:14  profilanswer
 

Ca va t'énerve pas... Je voulais juste savoir si y'avait pas un truc plus simple...
Merci qd meme. @+


Message édité par damondef le 12-05-2004 à 17:44:33
n°723723
Taz
bisounours-codeur
Posté le 12-05-2004 à 17:47:21  profilanswer
 

mais c'est enfantin, c'est toi qui abuses là ... personne au monde n'écris en base2 parce que c'est trop long. on utilise le décimal ou l'hexa/octal qui sont plus simple à manier. avec ça tu peux tout faire. après on ta indiquer comment manipuler une séquence de bits, bit par bit, parce qu'accéder au 3ème bit d'un entier c'est fastidieux

n°723752
jesus_chri​st
votre nouveau dieu
Posté le 12-05-2004 à 17:59:37  profilanswer
 

Taz, dans tous les forum que j'ai lu où t'as participé, y'en a pas un ou tu t'enerves pas contre un pauvre newbie. C'est pas parce que t'as bcp d'expérience dans le C++ que tu peux insulter les autres, prétentieux va.
 
damondef : http://msdn.microsoft.com/library/ [...] _class.asp
 
j'ai trouvé pour ton truc de chaîne en binaire :
bitset::to_string
 
mais ça marche que dans un sens.
 

Code :
  1. // ch : 32 caractères max ici, que des '0' ou '1'
  2. unsigned long stringToBinary(const char ch[])
  3. {
  4.    unsigned long temp = 0L;
  5.    while (*ch)
  6.    {
  7.        temp << 1;
  8.        if (*ch++ == '1') temp++;
  9.    }
  10.    return temp;
  11. }


 
voilà pour convertir un char*/char[] (chaîne type C) en entier 32-bits. Ca ne fait aucune vérif attention.


Message édité par jesus_christ le 12-05-2004 à 18:08:10
n°723772
Taz
bisounours-codeur
Posté le 12-05-2004 à 18:14:20  profilanswer
 

encore une fois, je ne vois aucun intéret d'écrire le binaire en base 2. apprends l'hexadécimal ou l'octal

n°723775
jesus_chri​st
votre nouveau dieu
Posté le 12-05-2004 à 18:17:17  profilanswer
 

Taz a écrit :

encore une fois, je ne vois aucun intéret d'écrire le binaire en base 2. apprends l'hexadécimal ou l'octal

et s'il y avait un intérêt que tu ne connaissais pas ?
 
ce truc j'ai déjà eu à le faire pour... un exo à la FAC. Le prof voulait une preuve que l'on avait compris le binaire (c'était en DEUG je crois...) et on devait coder un truc de conversion.
 
J'ai bien du le faire, ça m'a pris 5mn mais je l'ai fait. Si j'avais dit au prof "votre truc ça sert à rien, le binaire c'est une vision de l'esprit" je crois pas que j'aurais eu une bonne note. :D

n°723777
kadreg
profil: Utilisateur
Posté le 12-05-2004 à 18:18:35  profilanswer
 

jesus_christ a écrit :


 prétentieux va.


 
Je trouve cette remarque particulièrement déplacée par quelqu'un dont la citation associée est " votre nouveau dieu" :o

n°723778
Taz
bisounours-codeur
Posté le 12-05-2004 à 18:19:05  profilanswer
 

mais ça c'était simplement pour vous faire jouer avec les opérateurs bit à bit.

n°723787
jesus_chri​st
votre nouveau dieu
Posté le 12-05-2004 à 18:24:08  profilanswer
 

kadreg a écrit :

Je trouve cette remarque particulièrement déplacée par quelqu'un dont la citation associée est " votre nouveau dieu" :o

tu marques un point là :jap:
m'enfin un peu de gentillesse ne fais pas de mal, les réponses universelles du genre "ça sert à rien" ou "y'a mieux de toute façon" ça n'aide pas bcp.
 
Si tu trouves qu'il y a trop de newbies ici, va sur un forum plus "avancé" tu trouveras des questions à ta mesure :hello:

n°723816
Joel F
Real men use unique_ptr
Posté le 12-05-2004 à 18:53:26  profilanswer
 

y a pas trop de newbyes, y a trop de newbyes qui veulent tou tprémachés c'est pas pareil

n°723870
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-05-2004 à 20:18:47  profilanswer
 

Je n'ai qu'une chose à dire :
 
56697665206c61206e6f746174696f6e2068657861646563696d616c2121 :)


---------------
Cordialement, Xterm-in'Hate...
n°723885
Taz
bisounours-codeur
Posté le 12-05-2004 à 20:51:51  profilanswer
 

va t'en écrire ça en binaire ...
154047157143164141154040143141151040142151145156040141165163163151

n°723892
xterminhat​e
Si vis pacem, para bellum.
Posté le 12-05-2004 à 21:01:06  profilanswer
 

216c6f6c21


---------------
Cordialement, Xterm-in'Hate...
n°724085
HelloWorld
Salut tout le monde!
Posté le 13-05-2004 à 01:25:17  profilanswer
 

C'est pas un problème de C++ mais de processeur : Intel ne permet pas de manipuler plus bas que l'octet.
Pour une comparaison de bitset et vector<bool> :
http://www.codeguru.com/Cpp/Cpp/cp [...] hread=8520
http://cpptips.hyperformix.com/cpp [...] v_vec_bool
Exemples bien expliqués :
http://www.codeguru.com/cpp/tic/tic0230.shtml

n°724089
Taz
bisounours-codeur
Posté le 13-05-2004 à 01:30:16  profilanswer
 

non, même pas. en C et C++, la plus petite unité adressable est le 'char' qui doit faire au moins 8bits.
voir la doc de SGI pour l'interface de std::vector<bool> et std::bitset. si on a de la place ou si les défaillances de bitsets et vector<bool> sont problématique, l'utilisation de sequence<bool> est tout aussi conseillée

n°724093
HelloWorld
Salut tout le monde!
Posté le 13-05-2004 à 01:35:49  profilanswer
 

Quoi "même pas". Je ne crois pas avoir dit le contraire.
Je réagissait à sa remarque que c'était un défaut du C++ de ne pas avoir pensé à pouvoir manipuler des bits.

n°724123
Ace17
Posté le 13-05-2004 à 07:35:16  profilanswer
 

jesus_christ a écrit :

Taz, dans tous les forum que j'ai lu où t'as participé, y'en a pas un ou tu t'enerves pas contre un pauvre newbie. C'est pas parce que t'as bcp d'expérience dans le C++ que tu peux insulter les autres, prétentieux va.
 
damondef : http://msdn.microsoft.com/library/ [...] _class.asp
 
j'ai trouvé pour ton truc de chaîne en binaire :
bitset::to_string
 
mais ça marche que dans un sens.
 

Code :
  1. // ch : 32 caractères max ici, que des '0' ou '1'
  2. unsigned long stringToBinary(const char ch[])
  3. {
  4.    unsigned long temp = 0L;
  5.    while (*ch)
  6.    {
  7.        temp << 1;
  8.        if (*ch++ == '1') temp++;
  9.    }
  10.    return temp;
  11. }


 
voilà pour convertir un char*/char[] (chaîne type C) en entier 32-bits. Ca ne fait aucune vérif attention.


 
damondef, si tu es encore la, explique clairement ton probleme car "je voudrais simplement stocker du binaire" ca ne veut rien dire, dans la mesure ou tout ce que tu stockes c'est en binaire a l'intérieur.
 
Donne un exemple clair : de quoi tu pars, qu'est-ce que tu voudrais obtenir...
 
Et pour jesus_christ : pourquoi se casser la tete pour stocker du binaire... en base 2!! T'as peur de manquer de mémoire?
Taz - faisant preuve d'une grande patience, vu les réponses du newbie - a montré quelque chose de beaucoup plus simple a manipuler, a savoir std::vect<bool> ou, si il faut un tableau, bool chaine[N];

n°724161
damondef
Heu...
Posté le 13-05-2004 à 08:26:53  profilanswer
 

Salut @ tous! Je ne pensser pas que mon sujet foutrais tant le bordel. En fait le truc que je comprenais pas ct : pk le C++ pouvais accepter l'ASCII et pas le binaire.
Désolé d'être un mauvais newbie mais bon...
Mon problème est que je dois envoyer une trame qui est composé de plusieurs champ sur une liaison RS232. Par exemple un champ contient : 011111110 que je remplace par le caractère : ~ (si je ne me suis pas trompé!) mais la ou ça se complique c quand je dois envoyer 11100000. Je ne trouve pas d'équivalent en ASCII.
En tout k sachez que je ne voulais pas foutre le bordel.
Merci pour votre aide :-)

n°724199
damondef
Heu...
Posté le 13-05-2004 à 08:57:32  profilanswer
 

Et au final je voudrais ranger la trame complète dans un tableau...

n°724268
HelloWorld
Salut tout le monde!
Posté le 13-05-2004 à 09:54:46  profilanswer
 

Le processeur ne permet pas de manipuler des bits, mais au minimum des octets.
Du coup les langages n'ont pas cette possibilité, sauf quelques implémentations spécifiques de compilateurs C destinés à des processeurs disposant de ce mode d'adressage (micro-contrôleurs notamment).

n°724276
djdie
L'heure, c'est l'heure.
Posté le 13-05-2004 à 10:08:45  profilanswer
 

Et si tu dois envoyer 11100000 ben ce n'est pas un problème, envoie la version décimale, ou octale, ou hexadécimale, c'est pareil évidemment : 224, 0340, 0xE0

n°724425
Taz
bisounours-codeur
Posté le 13-05-2004 à 11:16:15  profilanswer
 

HelloWorld a écrit :

Le processeur ne permet pas de manipuler des bits, mais au minimum des octets.

manqué. ton processeur il peut tout faire, mais pas tout adresser. et comme déjà dit, y a des bêtes ou la plus petite unité adressable c'est 16bits

n°724488
Ace17
Posté le 13-05-2004 à 11:44:14  profilanswer
 

Taz a écrit :

manqué. ton processeur il peut tout faire, mais pas tout adresser


C'est contradictoire ca  :D  

n°724663
HelloWorld
Salut tout le monde!
Posté le 13-05-2004 à 14:00:46  profilanswer
 

Sous entendu son processeur = Intel (j'ai précisé Intel plus haut).
Et comme l'a dit Ace17, ta phrase elle veut rien dire. Et puis j'arrête là, c'est chipoter pour pas grand chose.

n°724895
damondef
Heu...
Posté le 13-05-2004 à 16:33:32  profilanswer
 

Et comment on fait pour ranger des valeurs hexa dans un tableau???


Message édité par damondef le 13-05-2004 à 16:33:45
n°724913
damondef
Heu...
Posté le 13-05-2004 à 17:00:58  profilanswer
 

Non c bon en fait g trouvé merci les gars :-)

n°724936
xterminhat​e
Si vis pacem, para bellum.
Posté le 13-05-2004 à 17:32:25  profilanswer
 

Ace17 a écrit :

C'est contradictoire ca  :D


 
Je ne pense pas que cela est contradictoire.
 
Un coeur micro peut changer la valeur d'un seul bit dans un registre de 8/16/32..bits. Par contre, un micro ne peut en aucun cas addresser un seul bit en mémoire, il doit lire ou ecrire 8/16/32.. bits.


---------------
Cordialement, Xterm-in'Hate...
n°725240
Ace17
Posté le 13-05-2004 à 21:43:40  profilanswer
 

Mais non, c'était pour rigoler que je disais ca... je jouais sur le sens du mot "faire". Car a priori, addresser, c'est faire.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  binaire en c++

 

Sujets relatifs
comment envoyer du binaire[VB] Connection HTTP pour récupérer un fichier binaire
Arbre binaire, trouver la profondeur d une node.Arbre binaire, comment copier tout les elements d un arbre dans ....
Extraire le contenu binaire d'un fichier vers une chaine de caracteres[C newbie] Comment convertir un tableau de binaire en caractère ?
commen on utilise le binaire avec les fichiers ??Générer le code binaire, par le récursif
ouvrir fichier texte en binaire, réinventage de roue???Ecrire et lire directement un fichier en binaire... (java)
Plus de sujets relatifs à : binaire en c++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR