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

admin3年前PHP教程88

本篇文章由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

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

相关文章

广东东莞高防服务器怎么买比较靠谱

广东东莞高防服务器怎么买比较靠谱?在购买广东东莞高防服务器时,需要注意以下几点来选择比较靠谱的服务商:选择知名的服务商:选择有良好口碑和信誉度的服务商,可以通过搜索引擎、相关论坛和社交媒体等方式来了解...

详解PHP使用非对称加密算法RSA

目录加密的类型非对称加密算法具体实现1、加密解密的第一步2、PHP的加密解密类库调用demo加密的类型在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文。...

如何在PHP中操作临时文件

目录获取 PHP 的默认临时创建文件目录创建一个临时文件根据目录状态创建一个唯一名称的临时文件总结获取 PHP 的默认临时创建文件目录学习过 Linux 操作系统的都会知道有一个目录是 /tmp 目录...

php字符串中转义成特殊字符实例讲解

在php的字符串使用时,我们有学会一些转义字符,相信大家在记忆这些知识点的时候费了不少的功夫。本篇我们为大家带来的是字符串的转义方法,涉及到特殊字符的使用,主要有两种方法可以实现:mysql库函数和转...

php实现ffmpeg处理视频的实践

最近有一个项目需要使用ffmpeg处理视频,这里我写了一个demo,方便我们来实现视频操作ffmpeg操作demo?123456789101112131415161718192021222324252...

浅谈PHP性能优化之php.ini配置

目录内存文件上传会话缓冲输出真实路径缓存内存默认设置memory_limit = 128M单个进程可使用的内存最大值,这个值的设定可以从以下几点考虑:应用的类型。如果是内存集中型应用,可增加该值;单个...