|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 11 ![]() |
Bonsoir,
Excusez moi si je reposte ce message, j'ai l'impression qu'il n'est pas passé car je ne le vois pas dans la liste. Je voudrais savoir comment surcharger les opérateurs pour pouvoir accéder à certains bits d'un entier. Par exemple : var[31:16] correspondrait au 16 bits de poids fort de mon entier var var[15:8] correspondrait au 2ème octet de mon entier var Merci Frédéric |
|
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Inscription : décembre 2004 Messages : 123 ![]() |
Il est possible de modifier l'opérateur existant pour la classe Fixnum, mais c'est plutôt casse-gueule. Il faut redéfinir l'opérateur existant qui permet de récupérer un bit pour prendre en compte la class Range (tu n'écriras pas X:Y mais X..Y).
Je te déconseille fortement ce genre de manip à moins d'être vraiment sûr de ton coup: Code :
Sinon tu peux jeter un oeil du côté de la gem bit-struct si tu veux jouer avec des bitfields. |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : octobre 2010 Messages : 11 ![]() |
Bonjour,
Merci pour ta réponse. En fait je voudrais éviter à l'utilisateur d'avoir à calculer les masques et décalages, c'est pour ça que je pensais utiliser les [ ]. La manip que tu as faite correspond exactement à ce que je cherche:-) Comment je peux récupérer les indices X et Y dans la fonction de surcharge ? Fred |
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() Inscription : décembre 2004 Messages : 123 ![]() |
Comme je ne suis pas fan de changer l'opérateur [] car il faudrait maintenir le fonctionnement actuel en plus du nouveau en croisant les doigts pour ne rien casser, voilà une fonction à l'arrache.
Elle doit faire ce que vous voulez, mais attention, sans aucun check des ranges de bits demandés et sans considérer les dérapages possibles liés au changement de type en cas d'âneries. Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com