Heim > Backend-Entwicklung > PHP-Tutorial > PHP内置函数32位和64位平台兼容性问题_PHP教程

PHP内置函数32位和64位平台兼容性问题_PHP教程

WBOY
Freigeben: 2016-07-21 14:55:35
Original
960 Leute haben es durchsucht

  帮客之家(www.Bkjia.com)教程 PHP 中的整数是 C 语言的中的long 类型,是有符号的,最大值是 2^31 。在 64 位平台上,long可以达到 2^63.

  这样的话,有些PHP 函数输出的结果在各个平台上就会不一致了。

  php -r "echo ip2long('255.255.255.255');" 在64位平台下是: 4294967295, 在32位平台下是 -1。还有比如 filesize 在 文件 大于 2G的时候,在不同的平台下结果就不一致了。

  解决这个问题很简单,sprintf("%u", filesize($file)). 把结果转换为 一个字符串。为什么结果会一样呢:无符号数 4294967295 的补码 和 有符号数 -1 的补码 是一样的。类似,返回值为int 最后结果可能大于 2^31 的函数,都要用这样的方法处理。

  注意,返回的虽然是一个字符串,但是,当进行四则运算的时候,PHP会自动装换。如果 数大于 2^31 会转换为 int 如果大于 了,就转换为double。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/364353.htmlTechArticle烈火网(LieHuo.Net)教程 PHP 中的整数是 C 语言的中的long 类型,是有符号的,最大值是 2^31 。在 64 位平台上,long可以达到 2^63. 这样的话,有些...
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage