Могу ли я использовать тип int для использования в качестве сетевой маски IP-адреса в C?
Мне нужно "И" IP-адрес с маской подсети. IP-адрес - это шестнадцатеричное число, а маска подсети - это число от 0 до 32 (не 0).
4a21bd6e/25
Можно ли использовать приведенный ниже код для "И" этих двух переменных, чтобы получить наиболее значимые 25 бит IP-адреса?
uint32_t IP = 4a21bd6e;
uint8_t netmask = 25;
int mask = 0x80000000;
uint32_t results = IP & (mask >> (netmask - 1));
2 ответа
Ответ может быть - если ваш выбор компилятора / процессора делает:
Почему бы не использовать uint32_t, как вы использовали для IP? Вы предполагаете, что int составляет 4 байта, но это не всегда так. Как правило, лучше использовать стандартные типы, поскольку они более переносимы и не зависят от архитектуры.