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

admin3年前PHP教程50

本篇文章由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如何实现HTTP验证

目录HTTP BasicHTTP Digest总结在日常开发中,我们进行用户登录的时候,大部分情况下都会使用 session 来保存用户登录信息,并以此为依据判断用户是否已登录。但其实 HTTP 也提...

PHP实现长轮询消息实时推送功能代码实例讲解

本文实例讲述了PHP实现的消息实时推送功能。分享给大家供大家参考,具体如下:入口文件index<!DOCTYPE HTML><html><head> &l...

php floor()函数案例详解

floor() 函数向下舍入为最接近的整数。语法floor(x)参数描述x必需。一个数。说明返回不大于 x 的下一个整数,将 x 的小数部分舍去取整。floor...

厦门高防服务器租用适合部署哪些行业

厦门高防服务器租用适合部署哪些行业?高防服务器一般用于提供更高级别的安全保障和防御能力,适用于需要更高安全性和防御能力的行业和应用场景。以下是一些适合部署高防服务器的行业:金融行业:金融行业对于数据安...

显卡服务器可以应用在哪些方面泉州显卡服务器适合哪些行业购买

很多朋友一般都听说过云服务器、物理服务器、高防服务器,大带宽服务器,有没有听说过显卡服务器?对于我们一般的用户而言,选择虚拟主机、云服务器和VPS主机是比较常见的,但是对于显卡服务器应该使用的不多。那...

图文详解laravel多对多关联模型

关联模型(多对多)多对多关系(抽象)例:一篇文章可能有多个关键词,一个关键词可能被多个文章使用。 关键词表:字段id主键字段keyword关键词文章与关键词的关系表: 字段id主键----字...