63 is 32 | 16 | 8 | 4 | 2 | 1, where |is binary or operator.
Or in other words (in hexadecimal): 63 (0x3F) - 0x20 | 0x10 | 0x8 | 0x4 | 0x2 | 0x1. If you look at them all in binary format, this is obvious:
0x20 : 00100000
0x10 : 00010000
0x08 : 00001000
0x04 : 00000100
0x02 : 00000010
0x01 : 00000001
And 63:
0x3F : 00111111
If you get some return status and want to know what this means, you will have to use the binary and. For instance:
if (status & 0x02)
{
}
, 0x02 ( ). (), - :
if (status & CONNECT_ERROR_FLAG)
{
}
, :
// Check if both flags are set in the status
if (status & (CONNECT_ERROR_FLAG | WRONG_IP_FLAG))
{
}
P.S.: , , this .