63 est 32 | 16 | 8 | 4 | 2 | 1
, où |
est l'opérateur ou binaire.
Ou en d'autres termes (en hex): 63 (qui est 0x3F) est 0x20 | 0x10 | 0x8 | 0x4 | 0x2 | 0x1
. Si vous les regardez tous en binaire, c'est évident:
0x20 : 00100000
0x10 : 00010000
0x08 : 00001000
0x04 : 00000100
0x02 : 00000010
0x01 : 00000001
Et 63 est:
0x3F : 00111111
Si vous obtenez un certain statut de retour et que vous voulez savoir ce qu'il signifie, vous devrez utiliser et binaire. Par exemple:
if (statut & 0x02)
{
}
Exécutera si le drapeau 0x02 (c'est-à-dire, le 2e bit à partir de la droite) est activé dans le statut retourné. Le plus souvent, ces drapeaux ont des noms (descriptions), donc le code ci-dessus ressemblera à:
if (statut & CONNECT_ERROR_FLAG)
{
}
Encore une fois, le statut peut être une combinaison de choses:
// Vérifie si les deux drapeaux sont définis dans le statut
if (statut & (CONNECT_ERROR_FLAG | WRONG_IP_FLAG))
{
}
P.S. : Pour apprendre pourquoi cela fonctionne, cet est un bel article sur les drapeaux binaires et leurs combinaisons.