首页后端开发其他后端知识在PHP7中十六进制字符串处理的数据问题怎样解决

在PHP7中十六进制字符串处理的数据问题怎样解决

时间2024-03-25 13:02:04发布访客分类其他后端知识浏览1330
导读:在这篇文章中我们将学习“在PHP7中十六进制字符串处理的数据问题怎样解决”的相关知识,下文有详细的介绍及实例,步骤过程清晰,简单易懂,小编觉得挺不错的,有需要的朋友可以借鉴参考,希望大家阅读完这篇能有所获。 具体问题: $t1 =...
在这篇文章中我们将学习“在PHP7中十六进制字符串处理的数据问题怎样解决”的相关知识,下文有详细的介绍及实例,步骤过程清晰,简单易懂,小编觉得挺不错的,有需要的朋友可以借鉴参考,希望大家阅读完这篇能有所获。

具体问题:

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

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

int(364129809)
int(364129809)

而在 php7的值为:

int(364129809)
int(0)

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

解决办法:

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

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

?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)
?>
    

针对上述问题就应该改成

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


通过以上内容的阐述,相信大家对“在PHP7中十六进制字符串处理的数据问题怎样解决”已经有了进一步的了解,更多相关的问题,欢迎关注网络或到官网咨询客服。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 在PHP7中十六进制字符串处理的数据问题怎样解决
本文地址: https://pptw.com/jishu/652796.html
node.js中的lts是什么,有何用处呢? node.js中出现1909警告情况怎么办呢

游客 回复需填写必要信息