小编典典

因此,我解决了这个问题,并发现了很多有关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整数溢出相关推荐

  1. python整数类型-Python整数类型(int)详解

    整数就是没有小数部分的数字,Python 中的整数包括正整数.0 和负整数. 有些强类型的编程语言会提供多种整数类型,每种类型的长度都不同,能容纳的整数的大小也不同,开发者要根据实际数字的大小选用不同 ...

  2. 给定一个32位有符号整数,将整数中的数字进行翻转

    给定一个32位有符号整数,将整数中的数字进行翻转 解题思路就是不断的求模,然后取余,然后注意溢出问题: 代码: #include<stdlib.h> #include<stdio.h ...

  3. 在c语言中整数除以0,整数除零在哪些平台上触发浮点异常?

    我不确定当前的情况如何,但是目前情况是FP异常检测支持与整数非常不同.整数除法陷阱很常见. 如果POSIXSIGFPE完全引发异常,则要求它引发. 但是,您可以找出它是哪种SIGFPE,以查看它实际上 ...

  4. 强制换行与强制不换行

    强制换行与强制不换行用到的属性 我们一般控制换行所用到的CSS属性一共有三个:word-wrap; word-break; white-space.这三个属性可以说是专为了文字断行而创造出来的.首先我 ...

  5. 在控制台输入一个整数,根据整数打印一个矩形 (Python)

    #在控制台输入一个整数,根据整数打印一个矩形 number = int(input("请输入整数:")) # 头 print( "*"* number) # 中 ...

  6. python实现isodd函数、参数为整数、如果整数为奇数_python 程序练习题

    1.实现isOdd(),参数为整数,如果整数为奇数,返回True,否则返回Flase 代码如下: def isOdd(a): if a%2==0: return False else: return ...

  7. java 日期 年数_关于java:为什么不赞成使用“新日期(整数年,整数月,整数日)”?...

    我最近继承的应用程序关于构造函数的弃用警告已满: Date d = new Date(int year, int month, int day) 有谁知道或可以指出为什么将类似以下内容的简单内容替换为 ...

  8. java存储整数,用于存储整数数值的是 JAVA四种整数数据类型的取值范围分别是多少...

    JAVA四种整数数据类型的取值范围分别是多少 byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) short的取值范围为-32768~32767,占用2个字节(-2的1 ...

  9. golang 数组组合成最小的整数_Redis之整数集合底层实现

    1.整数集合简述 整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现.例如当我们创建只包含五个元素的集合键,并且集 ...

  10. mac如何强制退出程序?强制退出程序的六种方法

    2019独角兽企业重金招聘Python工程师标准>>> mac如何强制退出程序?强制退出程序的六种方法 方法/步骤 第一种方法:通过键盘强制退出当前能够响应的 Mac 应用. 按住 ...

最新文章

  1. C++中检查vector是否包含给定元素的几种方式
  2. 【Python】字符串类型及操作求三位水仙花数
  3. java连接数据库代码写在哪里,jdbc连接数据库怎么做的。代码写哪里呀 求大神
  4. Tinker 热修复框架模拟使用
  5. 高质量的工程代码为什么难写
  6. fg jobs bg
  7. 关键字nullable,nonnull,null_resettable,_Null_unspecified详解
  8. 介绍KMP算法思想(例题:ACWING 831 kmp字符串)
  9. arcmap中加载底图
  10. 58同城赶集网简历怎么下载?【58同城赶集网简历采集,真实手机号联系方式获取】
  11. 酒店管理系统/酒店客房管理系统的设计与实现
  12. PLC工程师求职面试问题有哪些?
  13. 【CSS】笔记4-浮动、切图、学成在线
  14. ubuntu 坚果云无法切换用户[closed]
  15. 自动控制原理中的MATLAB函数以及用法总结
  16. Python数据分析-NumPy模块-选取数组元素
  17. iOS 多态和多继承
  18. libjpeg 库的安装
  19. 骑行中央公园,探索纽约“后花园”别样的美
  20. docker 基础知识分享ppt

热门文章

  1. Android Gradle编译问题
  2. 陈伯雄lisp_基于AutoLisp的AutoCAD二次开发自动生成系统图
  3. 十进制小数化为二进制小数的方法是什么_十进制转成二进制的两种方式
  4. 网络编程常用接口的内核实现----sys_listen()
  5. c语言二进制数怎么表示_搞懂这些公式和原理,二级C语言对你来说肯定会简单很多!...
  6. ASP.NET MVC 入门5、View与ViewData
  7. 开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源
  8. eclipse java maven_java – 非常轻量级的Eclipse-Maven集成 – 仅...
  9. CCIE-LAB-SDN-第六篇-SDWAN-Branch2-vEdge-51-vEdge-52
  10. CCIE理论-第八篇-SD-WAN(三)+DAI(动态ARP检测)