日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

php 强制变为整数,强制PHP整数溢出

發布時間:2023/12/13 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 强制变为整数,强制PHP整数溢出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

小編典典

因此,我解決了這個問題,并發現了很多有關PHP的知識(至少在處理Integer溢出的方式方面)。

1)它完全取決于機器在哪個平臺上運行,哪個版本的PHP,是否運行Suhosin Hardened

PHP以及為多少(32或64)位編譯之間的交叉。6臺計算機的行為符合我的預期(實際上是錯誤的,至少根據他們的文檔是錯誤的),而3臺計算機的行為依舊無法解釋,而3臺計算機的行為則是根據intval命令說的來完成的。文檔。

2)當int>

PHP_INT_MAX(不是int和0xffffffff)時,Intval應該返回PHP_INT_MAX,但這僅在某些版本的PHP4和PHP5上發生。當int>

PHP_INT_MAX時,不同版本的PHP返回不同的值。

3)以下代碼可以返回3個不同的結果(請參見1):

echo "Php max int: ".PHP_INT_MAX."\n";

echo "The Val: ".(-1580033017 + -2072974554)."\n";

echo "Intval of the val: ".intval(-3653007571)."\n";

echo "And 0xffffffff of the val: ".(-3653007571 & 0xffffffff)."\n";

?>

它可以返回(對于Intval似乎正確,但對于&0xffffff則錯誤)

Php max int: 2147483647

The Val: -3653007571

Intval of the val: -2147483648

And of the val: -2147483648

它可以返回(與intval的PHP文檔相矛盾):

Php max int: 2147483647

The Val: -3653007571

Intval of the val: -641959725

And of the val: -641959725

在64位計算機上,它返回(正確):

Php max int: 2147483647

The Val: -3653007571

Intval of the val: -3653007571

And of the val: -641959725

無論如何,我需要一個適用于所有這些平臺的解決方案,并且不依賴于使用特定Max

int編譯的特定版本PHP的怪癖。因此,我總結了以下跨PHP的threenTwoBitIntval函數:

function thirtyTwoBitIntval($value)

{

if ($value < -2147483648)

{

return -(-($value) & 0xffffffff);

}

elseif ($value > 2147483647)

{

return ($value & 0xffffffff);

}

return $value;

}

評論

我確實認為PHP的設計師應該說一個Int是32位Int,無論它是在32位,64位還是128位計算機上運行(例如DotNet

CLR),并且沒有將其隨機上轉換為浮動取決于PHP編譯器所依據的位數。

2020-05-19

總結

以上是生活随笔為你收集整理的php 强制变为整数,强制PHP整数溢出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。