Понадобилось мне перегонять IP адрес из строки в integer и обратно, на PHP. Отправился по привычке гуглить. Нашел следующий код:
function int2ip($i)
{
$d[0]=(int)($i/256/256/256);
$d[1]=(int)(($i-$d[0]*256*256*256)/2
56/256);
$d[2]=(int)(($i-$d[0]*256*256*256-$d[1]
*256*256)/256);
$d[3]=$i-$d[0]*256*256*256-$d[1]*256*25
6-$d[2]*256;
return "$d[0].$d[1].$d[2].$d[3]";
}
Начал было внедрять, потом смотрю, что блин за лажа? Зачем так сложно? Зачем столько умножений и делений? Да на C++ я бы... и перписал:
function int2ip($value)
{
if(is_integer($value))
{
$d[0] = (int)(($value >> 0) & 0xff);
$d[1] = (int)(($value >> 8) & 0xff);
$d[2] = (int)(($value >> 16) & 0xff);
$d[3] = (int)(($value >> 24) & 0xff);
return $d[3].'.'.$d[2].'.'.$d[1].'.'.$d[0];
}
return '';
}
Уже не в первый раз замечаю, как порой неэффективно написан код в PHP примерах, нарытых в инете. Может кончено PHP интерпретатору и по барабану (в чем я сомневаюсь) , но как программист приложений реального времени, я не могу смотреть на такой код спокойно :)