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整数溢出相关推荐
- python整数类型-Python整数类型(int)详解
整数就是没有小数部分的数字,Python 中的整数包括正整数.0 和负整数. 有些强类型的编程语言会提供多种整数类型,每种类型的长度都不同,能容纳的整数的大小也不同,开发者要根据实际数字的大小选用不同 ...
- 给定一个32位有符号整数,将整数中的数字进行翻转
给定一个32位有符号整数,将整数中的数字进行翻转 解题思路就是不断的求模,然后取余,然后注意溢出问题: 代码: #include<stdlib.h> #include<stdio.h ...
- 在c语言中整数除以0,整数除零在哪些平台上触发浮点异常?
我不确定当前的情况如何,但是目前情况是FP异常检测支持与整数非常不同.整数除法陷阱很常见. 如果POSIXSIGFPE完全引发异常,则要求它引发. 但是,您可以找出它是哪种SIGFPE,以查看它实际上 ...
- 强制换行与强制不换行
强制换行与强制不换行用到的属性 我们一般控制换行所用到的CSS属性一共有三个:word-wrap; word-break; white-space.这三个属性可以说是专为了文字断行而创造出来的.首先我 ...
- 在控制台输入一个整数,根据整数打印一个矩形 (Python)
#在控制台输入一个整数,根据整数打印一个矩形 number = int(input("请输入整数:")) # 头 print( "*"* number) # 中 ...
- python实现isodd函数、参数为整数、如果整数为奇数_python 程序练习题
1.实现isOdd(),参数为整数,如果整数为奇数,返回True,否则返回Flase 代码如下: def isOdd(a): if a%2==0: return False else: return ...
- java 日期 年数_关于java:为什么不赞成使用“新日期(整数年,整数月,整数日)”?...
我最近继承的应用程序关于构造函数的弃用警告已满: Date d = new Date(int year, int month, int day) 有谁知道或可以指出为什么将类似以下内容的简单内容替换为 ...
- java存储整数,用于存储整数数值的是 JAVA四种整数数据类型的取值范围分别是多少...
JAVA四种整数数据类型的取值范围分别是多少 byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) short的取值范围为-32768~32767,占用2个字节(-2的1 ...
- golang 数组组合成最小的整数_Redis之整数集合底层实现
1.整数集合简述 整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现.例如当我们创建只包含五个元素的集合键,并且集 ...
- mac如何强制退出程序?强制退出程序的六种方法
2019独角兽企业重金招聘Python工程师标准>>> mac如何强制退出程序?强制退出程序的六种方法 方法/步骤 第一种方法:通过键盘强制退出当前能够响应的 Mac 应用. 按住 ...
最新文章
- C++中检查vector是否包含给定元素的几种方式
- 【Python】字符串类型及操作求三位水仙花数
- java连接数据库代码写在哪里,jdbc连接数据库怎么做的。代码写哪里呀 求大神
- Tinker 热修复框架模拟使用
- 高质量的工程代码为什么难写
- fg jobs bg
- 关键字nullable,nonnull,null_resettable,_Null_unspecified详解
- 介绍KMP算法思想(例题:ACWING 831 kmp字符串)
- arcmap中加载底图
- 58同城赶集网简历怎么下载?【58同城赶集网简历采集,真实手机号联系方式获取】
- 酒店管理系统/酒店客房管理系统的设计与实现
- PLC工程师求职面试问题有哪些?
- 【CSS】笔记4-浮动、切图、学成在线
- ubuntu 坚果云无法切换用户[closed]
- 自动控制原理中的MATLAB函数以及用法总结
- Python数据分析-NumPy模块-选取数组元素
- iOS 多态和多继承
- libjpeg 库的安装
- 骑行中央公园,探索纽约“后花园”别样的美
- docker 基础知识分享ppt
热门文章
- Android Gradle编译问题
- 陈伯雄lisp_基于AutoLisp的AutoCAD二次开发自动生成系统图
- 十进制小数化为二进制小数的方法是什么_十进制转成二进制的两种方式
- 网络编程常用接口的内核实现----sys_listen()
- c语言二进制数怎么表示_搞懂这些公式和原理,二级C语言对你来说肯定会简单很多!...
- ASP.NET MVC 入门5、View与ViewData
- 开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源
- eclipse java maven_java – 非常轻量级的Eclipse-Maven集成 – 仅...
- CCIE-LAB-SDN-第六篇-SDWAN-Branch2-vEdge-51-vEdge-52
- CCIE理论-第八篇-SD-WAN(三)+DAI(动态ARP检测)