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

admin3年前PHP教程87

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

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

相关文章

ajax的核心(ajax和json的区别)

ajax的核心是什么ajax的核心是数据获取技能“XMLHttpRequest”,它是JavaScript的一个目标。经过XMLHttpRequest可在不改写页面的情况下恳求特定URL,获取数据,让...

用php如何解决大文件分片上传问题

如果上传的文件只有小于10M的话, 就没必要考虑这样的做法, 直接在 php.ini中更改一下 upload_max_filesize = 10m post_max_size = 10m 这样就可以了...

php去掉一维数组的键值的实例方法

 在 PHP 中,数组的每个元素都是由键值对(key-value)组成,通过元素的键名来访问对应键的值。提示:“索引”和“键名”指的是同一样东...

如何正确选择GPU服务器香港gpu服务器租用费用多少

GPU即图形处理器,又称显示核心、视觉处理器、显示芯片,是一种专门用做图像和图形相关运算工作的微处理器。GPU服务器是基于GPU的应用于视频编解码、深度学习、科学计算等多种场景的快速、稳定、弹性的计算...

PHP中断言函数的使用详解

目录assert() 断言函数assert_options() 及相对应的 php.ini 中的参数配置总结原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这...

美国站群服务器租赁要注意哪些事项

美国站群服务器租赁要注意哪些事项?1、美国站群服务器技术服务美国站群服务器提供商一般都会标榜自己是7x24小时服务,大家可以在晚上找个时段往打个电话过往或者找一下他们的技术qq和提交问题,查一下岗,如...