Re: Problems using bitwise &
Philluminati wrote:
>
> $ip = $networkObjectRow['sipv4addr'];
> $subnet = $networkObjectRow['eipv4addr'];
>
> //make php treats these likes numbers and not strings
>
> $ip += (int)0;
> $subnet += (int)0;
$ip = (int)$networkObjectRow['sipv4addr'];
$subnet = (int)$networkObjectRow['eipv4addr'];
>
> print("<!-- sip F (ip=$ip,subnet=$subnet) returned is
> $ans -->\n");
> return ($ans);
>
> However my output is like this:
>
> <!-- sip F (ip=170419457,subnet=4294967040) returned is 170419456 -->
> <!-- sip F (ip=170419457,subnet=4294967040) returned is 170419456 -->
> <!-- sip F (ip=3388826225,subnet=4294967280) returned is -906141072 --
> <!-- sip F (ip=3388826225,subnet=4294967280) returned is -906141072 --
> <!-- sip F (ip=170419969,subnet=4294967040) returned is 170419968 -->
>
> <!-- sip F (ip=170419969,subnet=4294967040) returned is 170419968 -->
>
> Where the IP starts 17... the answer is correct. When the value starts
> 3388 the value is wrong.
PHP _outputs_ it as signed integer. Try formatted output to clear
this question:
printf("<!-- sip F (ip=%08X,subnet=%08X) returned is %08X
-->\n",$ip,$subnet,$ans);
|