IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Manipulation des bits


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    209
    Points
    120
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 209
    Points : 120
    Par défaut Manipulation des bits
    Bonjour,
    Lorsque dans un formulaire, un utilisateur sélectionne certains items, je souhaite coder cette information dans la propriété "value" d'un champ caché "hidden".
    Modifier la propriété value du dit champ ne pose aucun problème en soi.
    Il y a 16 items susceptibles d'être sélectionnés.
    Je comptais donc dans un entier utiliser 16 bits. Les mettre à 1 si l'item est sélectionné et à 0 dans le cas contraire.
    L'opération terminée, écrire le contenu de cette variable dans le champ caché.
    Puis lire les bits par une boucle avec PHP.
    Mais voilà, je sais faire dans d'autres langages cependant avec javascripts comme avec PHP du reste, modifier les bits d'une variable est une fonctionnalité non documentée à ma connaissance...
    Du reste le type entier semble ne pas tout à fait correspondre au même type en C par exemple.
    Savez-vous faire ?
    Merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Points
    36 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Par défaut
    Bonjour,
    ça ne serait pas plus simple de gérer un tableau (Array) contenant des 0 ou des 1 ?

    A+

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 647
    Points
    66 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 647
    Points : 66 689
    Billets dans le blog
    1
    Par défaut
    en js c'est possible avec un système de sommes de puissances de 2 puis une conversion du resultat en binaire puis un toString et enfin un split('')
    ce qui donne un array de boolean ...

  4. #4
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Points
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Par défaut
    Citation Envoyé par JLC83 Voir le message
    Bonjour,
    Il y a 16 items susceptibles d'être sélectionnés.
    Je comptais donc dans un entier utiliser 16 bits. Les mettre à 1 si l'item est sélectionné et à 0 dans le cas contraire.
    Cela revient à n'utiliser que des entiers puissance de 2...
    2^0, 2^1, 2^2...2^15 (soit 1, 2, 4, ..., 32768) et à les additionner.
    Pour vérifier si dans la variable l'item, de valeur 4 est sélectionnée, en javascript on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var val = // recupere toutes les valeurs
    if((val & 4) == 4) {
     
    }
    Mais comme le suggère E.Bzz, un tableau n'est pas plus simple ?

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    209
    Points
    120
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 209
    Points : 120
    Par défaut
    Oui, j'avais déjà exécuté du similaire, tout comme la solution tableau ou string de 0 et de 1...
    Mais j'espérais attaquer directement...
    Merci, je vais aller vers ta solution.
    Jean-Louis

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 647
    Points
    66 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 647
    Points : 66 689
    Billets dans le blog
    1
    Par défaut
    C'est pas très compliqué a mettre en oeuvre:
    Un petit exemple avec 8 options
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <script type="text/javascript">
    function foo(){
    var somme=0, i=0;
    while (document.getElementsByName('opt')[i++]){
           if(document.getElementsByName('opt')[i-1].checked){
           		somme+=parseInt(document.getElementsByName('opt')[i-1].value,10)
           		}
           	}	
     
    var bin = somme.toString(2)/10; 
    TabBool=bin.toString().split('')
    TabBool.reverse()
    while(TabBool.length<8){
    TabBool.push(0)
    }
    alert(TabBool)
    }</script>
    </head>
     
    <body>
    <form name="myform" action="javascript: foo()">
    <input type="checkbox" value="2" name="opt"/>option 1<br/>
    <input type="checkbox" value="4" name="opt"/>option 2<br/>
    <input type="checkbox" value="8" name="opt"/>option 3<br/>
    <input type="checkbox" value="16" name="opt"/>option 4<br/>
    <input type="checkbox" value="32" name="opt"/>option 5<br/>
    <input type="checkbox" value="64" name="opt"/>option 6<br/>
    <input type="checkbox" value="128" name="opt"/>option 7<br/>
    <input type="checkbox" value="256" name="opt"/>option 8<br/>
    <input type="submit" value="go" />
    </form>
    </body>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction de manipulation des bits
    Par hadiya dans le forum C++/CLI
    Réponses: 1
    Dernier message: 14/03/2014, 15h02
  2. manipulation des bits
    Par deMonHunTer dans le forum C
    Réponses: 9
    Dernier message: 12/01/2010, 23h11
  3. Manipulation des bits
    Par BatuBou dans le forum C
    Réponses: 17
    Dernier message: 11/01/2008, 20h24
  4. Manipuler des bits
    Par line86 dans le forum C
    Réponses: 9
    Dernier message: 21/10/2007, 22h18
  5. [VS 2005] Manipuler des bits
    Par b_lob dans le forum C#
    Réponses: 5
    Dernier message: 05/02/2007, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo