cs_kraven
Messages postés13Date d'inscriptionjeudi 30 août 2001StatutMembreDernière intervention13 novembre 2013
-
23 mai 2012 à 14:44
cs_kraven
Messages postés13Date d'inscriptionjeudi 30 août 2001StatutMembreDernière intervention13 novembre 2013
-
25 mai 2012 à 10:01
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?
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 24 mai 2012 à 02:19
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)