32 ビットと 64 ビットの php の intval の問題について
php の int 行は 32 ビット システムでは 4Byte、64 ビット システムでは 8Byte であるため、32 ビットおよび 64 ビット システムでは整数が 4Byte を超えます。 64 によって返される結果は異なります。今度は統合関数を作成し、32 ビット アルゴリズム
を使用します。
function intval32($num) { $num = $num & 0xffffffff;//消掉高32位 $p = $num>>31; //取第一位 判断是正数还是负数 if($p==1) { //负数 $num = $num-1; $num = ~$num; //取反 会当成64位取反,算出来的数就去了,所以取反之后 要消掉 高32位 $num = $num & 0xffffffff; return $num * -1; } else { return $num; } }