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

ASP Discussion :

[ASP->PHP] Logique binaire avec des nombres (flags)


Sujet :

ASP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut [ASP->PHP] Logique binaire avec des nombres (flags)
    Bonjour !

    Je voudrais transcrire un script ASP en PHP. Je ne savais pas trop s'il fallait le mettre dans ce forum ou dans celui du PHP
    Enfin bon, partant de l'ASP j'ai pensé que ca devrait être ici.

    J'utilise un système de flags, et j'avais un script en ASP que je trouvais bien pratique en utilisant la logique binaire sur des nombres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for i=0 to 20
    	if (flags_champs and 2^i)=2^i then
    		'Le champ d'indice i est affiché
            [...]
    	end if
    next
    flags_champs est construit de la façon suivante : supposons que les champs 1,5,8 soient affichés alors flags_champs = 2^1 + 2^5 + 2^8 = 290.
    ( (290 and 2^5)=2^5 ) => true
    ( (290 and 2^6)=2^6 ) => false


    Bref, je cherche un moyen de faire ça en php, ou sous MySQL, mais dans les deux cas, l'utilisation du AND ne prends pas en compte la logique binaire ! Cela se contente simplent de vérifier si un des paramètre vaut 0 ou NULL.

    Bref ça m'arrange pas du tout.

    Pourriez-vous m'aider? Merci d'avance ^^

    [edit]
    c'est pour une conversion vers php 4.3.10

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Bon, après moultes recherches, et quantités astronomiques de tests, j'ai fini par trouver un script php qui s'en rapproche énormément :

    Dans le cas présent je construit une chaine de caractère contenant les id concernés, afin de l'exploiter plus tard dans un tableau (via la fonction explode).
    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
     
     
    $flags_champs = XXX ;
    $liste_ids = "" ;
     
    $n = 0 ;
     
    while ( $flags_champs > 0 )
    	{
       if ( $flags_champs & 1 == 1 )
    		{
    		$liste_ids .= ",".$n ;
    		} ;
    	$n++ ;
    	$flags_champs >>= 1 ;
    	} ;
     
    $liste_ids = substr($liste_ids,1) ;
    Aaah, j'ai enfin trouvé la lumière... amen... je suis un homme heureux ce soir, venez rejoindre la lumière avec moi, aoooom...
    (y'a pas a dire, la programmation, ça tape la tête).

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

Discussions similaires

  1. Ecrire un fichier binaire avec des caractères
    Par stokastik dans le forum C
    Réponses: 18
    Dernier message: 17/08/2006, 17h40
  2. Problème de syntaxe avec des nombres
    Par baleiney dans le forum Langage
    Réponses: 7
    Dernier message: 09/07/2006, 10h48
  3. Problèmes avec des nombres... que faire ?
    Par sducos81 dans le forum C++
    Réponses: 6
    Dernier message: 21/07/2005, 13h46
  4. sum avec des nombres avec virgule
    Par Bruno2000 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/09/2004, 15h01
  5. Cripter avec des nombres premiers
    Par clovis dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/04/2004, 19h10

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