Mask binaire???

Signaler
Messages postés
13
Date d'inscription
jeudi 30 août 2001
Statut
Membre
Dernière intervention
13 novembre 2013
-
cs_kraven
Messages postés
13
Date d'inscription
jeudi 30 août 2001
Statut
Membre
Dernière intervention
13 novembre 2013
-
Bonjour,

N'étant pas développeur et souhaitant rapidement faire une petite appli en PHP, j'ai une question.

J'ai un appareil qui dispose d'une MIB et que je peux l'interroger via le protocole SNMP.

J'arrive à récupérer toutes les infos de la MIB et les stocker dans un tableau de variable en PHP.

Mon souci est que certaines valeurs demandent à être exploitées via des mask binaire et là je suis perdu.

J'ai par exemple.

La valeur retournée est un entier de 0 à 255 et on me dit dans la doc de la MIB

Valeur (bit a 0 pour non ouvert)
- bit 0 : état de porte 1
- bit 1 : état de porte 2
- bit 2 : état de porte 3
- bit 3 : état de porte 4
- bit 4 : état de porte 5
- bit 5 : état de porte 6
- bit 6 : état de porte 7
- bit 7 : état de porte 8
Signification de la valeur des bits : 0 pour porte fermée, 1 pour porte ouverte

Si je stock cette valeur dans la varibale MIB[15] comment puis-je faire pour extraire la valeur de chaques bits?

Merci

3 réponses

Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
2
Bonjour,

quelque chose comme ceci devrait fonctionner:
for($i = 0; i < sizeof($MIB);++$i){
    echo $MIB[$i];
}
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
11
Salut,

@L0ci: Désolé mais tu as tout faux.

@kraven: Ce que tu as c'est un entier. Cet entier est représenté en mémoire par une série de bits, dans le cas présent 8. Ce que tu dois faire c'est utiliser l'opérateur binaire ET (AND, symbole &) avec des masques afin de connaître la valeur d'un bit.

Rappel :
0 & 0 = 0
1 & 1 = 0
1 & 0 = 0
0 & 1 = 1

Exemple :

Tu as le nombre 124. En binaire ça donne 01111100. Pour connaître la valeur d'un bit on utilise le masque qui contient 0 partout sauf au bit qui nous intéresse. On regarde le résultat du AND, s'il est égal à 0, alors il y avais 0, s'il est différent de 0 (égal au masque) alors c'était un 1.
124 & 1 0 (01111100 & 00000001 00000000)
124 & 2 0 (01111100 & 00000010 00000000)
124 & 4 4 (01111100 & 00000100 00000100)
124 & 8 8 (01111100 & 00001000 00001000)
Messages postés
13
Date d'inscription
jeudi 30 août 2001
Statut
Membre
Dernière intervention
13 novembre 2013

Merci pour vos réponses.

Donc la méthode LOci ne fonctionne pas et je ne comprend pas comment mettre en oeuvre la méthode de TychoBrahe.

Peu-être un bout de code?