2008年03月16日
PHP higixi
誰かこのPHPの挙動を説明してください・・・。ThriftのPHPライブラリが動かなかったので見つけた。
- 参考: unpack
- 追記: バグらしい thanks to mizunonさん
サンプルコード
pficore% cat hoge.php
<?php
$v1 = 132;
$d = pack("N", $v1);
$v2 = unpack("N", $d);
print_r($v2);
$unpacked = unpack('nhigh/nlow', $d);
$v2 = ($unpacked['high'] << 16) + $unpacked['low'];
print_r($v2)
?>
PHP v5.2.1
pficore% php --version
PHP 5.2.1 (cli) (built: Nov 28 2007 23:22:01)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
pficore% php hoge.php
Array
(
[1] => -2147483516
)
132
PHP v4.3.9
[web at pfiweb1 ~]$ php --version
PHP 4.3.9 (cgi) (built: May 10 2007 05:09:26)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
[web at pfiweb1 ~]$ php hoge.php
Array
(
[1] => 132
)
132
- by
- at 16:26

comments
5.2.1の64bit環境バグ♥
http://bugs.php.net/bug.php?id=40749
ひぎぃバグですか♥ 情報ありがとうございます。
うーんPHPのバグだったらthriftの方で対応してくれなさそうだから、黙ってよう...。
# もしやmizunonさんも踏まれたのかなw