У кого воспроизводится баг с unpack на 64bit?

confguru

ExAdmin
Команда форума
У кого воспроизводится баг с unpack на 64bit?

http://bugs.php.net/bug.php?id=42510

$u = unpack('Vresult', chr(200).chr(200).chr(200).chr(200));
echo "unpack = ", $u['result'], "\n";
echo "ip2long = ", ip2long('200.200.200.200'), "\n";


Expected result:
----------------
unpack = 3368601800
ip2long = 3368601800

Actual result:
--------------
unpack = -926365496
ip2long = 3368601800
 

das6745

Новичок
unpack = -926365496
ip2long = -926365496

на 32. я так понимаю возвращается знаковое число, а должно беззнаковое
 

confguru

ExAdmin
Команда форума
вроде вот это помогает.. :)
$a=unpack('Ni',chr(200).chr(200).chr(200).chr(200));
var_dump($a);
$b = sprintf("%b", $a['i']); // binary representation
var_dump($b);
if(strlen($b) == 64){
$new = substr($b, 32);
$a['i'] = bindec($new);
}
echo $a['i']."<hr>";
 

SiMM

Новичок
PHP:
$u = unpack('Vresult', chr(200).chr(200).chr(200).chr(200));
printf("unpack = %u\n",$u['result']);
printf("ip2long = %u\n", ip2long('200.200.200.200'));
> я так понимаю возвращается знаковое число, а должно беззнаковое
Нету в PHP целых беззнаковых.

-~{}~ 07.11.07 17:33:

http://php.net/language.types.integer
 
Сверху