前にも少し書きましたが、FreeBSDを i386 版から amd64 に切り替えたので、PHPの整数型変数の取扱いが少々変わっています。てことでちょっと実験してみました。
<?php
$a = 1;
$b = 1;
while($a>0) {
$a = (integer)($a * 2);
echo "2^$b = " , $a , "\n";
$b++;
}
?>
2^1 = 2 2^2 = 4 2^3 = 8 (略) 2^30 = 1073741824 2^31 = -2147483648
2^1 = 2 2^2 = 4 2^3 = 8 (略) 2^30 = 1073741824 2^31 = 2147483648 (略) 2^62 = 4611686018427387904 2^63 = -9223372036854775808
ビデオキャプチャの録画データを扱っていると、ファイルサイズが 2^31-1 バイトを超えることも珍しくありません。裏ワザを使わずとも受け取った値をそのまま使えるってのはなかなか便利です。「整数型なんて32ビット長あれば十分」と思っていましたが、実際には十分じゃないので長くても遅くならないのであればこっちの方が良いですな。
参考までに、64ビット整数型はどれくらいのファイルサイズまで扱えるのか数えてみました。
E P T G M K 4,611,686,018,427,387,904
えーと、きろ・めが・ぎが・てら・ぺた・えくさ、、ですか? 我が家のHDDは「次は夢のいちてら!!」というレベルなので当面は大丈夫そうですね。
そして、上の数字を日本円に直すと4百京円。京ってどれくらいの金額なんだろう(笑)? 百万円ぐらいの数字は読めるのですが、それより上の位にカンマが4つもある世界なんてよくわかんないです。