PHP7中对十六进制字符串处理的问题详解

admin3年前PHP教程33

本篇文章由PHP7教程栏目给大家介绍一下关于 php7 中 "0xFFFFFFFF" 和 0xFFFFFFFF 的问题。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

具体问题:

?

1
2
3
$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11));
$t2 = 0x3FFFFFFF & (1 * ("0xd5b42e11"));
var_dump($t1,$t2);






以上代码在 php7(不含)以下平台的值为:

?

1
2
int(364129809)
int(364129809)






而在 php7的值为:

?

1
2
int(364129809)
int(0)






请问,在 php7的环境下,应该如何处理 0x.$str 使它同上面值一样呢?

解决办法:

PHP7开始,含十六进制字符串不再被认为是数字

如果非要检测字符串是否含十六进制数字,官方建议的代码是

?

1
2
3
4
5
6
7
8
<?php
$str = "0xffff";
$int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX);
if (false === $int) {
    throw new Exception("Invalid integer!");
}
var_dump($int); // int(65535)
?>






针对上述问题就应该改成

?

1
2
3
$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11));
$t2 = 0x3FFFFFFF & (1 * (filter_var("0xd5b42e11", FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX)));
var_dump($t1,$t2);






到此这篇关于PHP7中对十六进制字符串处理的问题详解的文章就介绍到这了,更多相关PHP7中对十六进制字符串处理的问题内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:php/topic/php7/484545

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

游戏出海东南亚服务器应该怎么选择

游戏出海东南亚服务器应该怎么选择?如果您想将游戏出海到东南亚市场并选择服务器,以下是几个因素应该考虑:延迟和稳定性:选择距离目标用户更近的服务器可以减少延迟,提供更稳定的连接。这对于需要实时交互的多人...

如何在thinkphp中使用windows计划任务定时执行php文件

实现思路如下:通过win的“任务”功能来定时执行一个bat文件,bat文件会调用php.exe文件,php.exe可以传递参数指定执行哪个类和方法方法如下:一,thinkphp...

PHP调用外部程序的方法解析

目录前提:PHP没有运行在安全模式1. exec2. system3. passthru4. popen5. proc_open6. shell_exec7. 反撇号`8tl_exec10....

关于PHP数组迭代器的使用方法实例

近来在开发一个视力筛查电子报告系统的产品,这个产品的作用是自动提取视力筛查过程中得到的屈光检查数据,并结合数据自动生成通俗易懂且专业的电子报告,以方便家长可以通过公众号或h5链接查阅。要实现这个需求,...

php判断数组元素不为空格实例代码

1、使用foreach ($arr as $value){}语句遍历数组。2、使用if($value!=" ")语句判断数组元素是否为空格。3、如果数组元素全部不为空,则输出数组元...

购买宁波高防服务器进行ddos攻击防御多少g才够用

购买宁波高防服务器进行ddos攻击防御多少g才够用?购买宁波高防服务器进行DDoS攻击防御时,需要考虑多个因素,包括攻击类型、攻击流量、服务器的带宽和防护能力等等。因此,不同的防御需求需要不同的防御能...