For the scope of the question I created this small example:
<?php
$ip_1 = ['11000000', '10101000', '00000001', '00000001'];
//transforma cada octeto em um array de strings
$octeto1 = str_split($ip_1[0]);
$octeto2 = str_split($ip_1[1]);
$octeto3 = str_split($ip_1[2]);
$octeto4 = str_split($ip_1[3]);
verificarBit($octeto1);
verificarBit($octeto2);
verificarBit($octeto3);
verificarBit($octeto4);
/**
para verificar se um bit está setado penso que basta verificar se ele
é igual a 1 (digito binário)
*/
function verificarBit($octeto){
for($i = 0; $i < count($octeto); $i++){
if($octeto[$i] === '1'){
echo 'está setado <br>';
}else{
echo 'não setado <br>';
}
}
}
/**
eventualmente você pode usar funções de conversão entre bases numericas
Como por exemplo decbin(int numero) que converte de decimal para binario.
bindec(string binario) que converte de binario para decimal
@param $ip array array com quatro octetos ['binario', 'binario', 'binario', 'binario']
@return array [numero, numero, numero, numero]
*/
function converterIpParaDecimal($ip){
$ip_numerico = [];
foreach($ip as $octeto){
$ip_numerico[] = bindec($octeto);
}
return $ip_numerico;
}
//testando conversão
$ip_numerico = converterIpParaDecimal($ip_1);
echo '<br><br>';
echo $ip_numerico[0] . '.' . $ip_numerico[1] . '.' . $ip_numerico[2] . '.' . $ip_numerico[3];
I do not know what the features of your calculator are, but the functions presented should support implementation.