本篇文章由PHP7教程欄目給大家介紹一下關(guān)于 php7 中 "0xFFFFFFFF" 和 0xFFFFFFFF 的問(wèn)題。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。
具體問(wèn)題:
1
2
3
|
$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11)); $t2 = 0x3FFFFFFF & (1 * ( "0xd5b42e11" )); var_dump( $t1 , $t2 ); |
以上代碼在 php7(不含)以下平臺(tái)的值為:
1
2
|
int(364129809) int(364129809) |
而在 php7的值為:
1
2
|
int(364129809) int(0) |
請(qǐng)問(wèn),在 php7的環(huán)境下,應(yīng)該如何處理 0x.$str 使它同上面值一樣呢?
解決辦法:
PHP7開(kāi)始,含十六進(jìn)制字符串不再被認(rèn)為是數(shù)字
如果非要檢測(cè)字符串是否含十六進(jìn)制數(shù)字,官方建議的代碼是
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) ?> |
針對(duì)上述問(wèn)題就應(yīng)該改成
1
2
3
|
$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11)); $t2 = 0x3FFFFFFF & (1 * (filter_var( "0xd5b42e11" , FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX))); var_dump( $t1 , $t2 ); |
到此這篇關(guān)于PHP7中對(duì)十六進(jìn)制字符串處理的問(wèn)題詳解的文章就介紹到這了,更多相關(guān)PHP7中對(duì)十六進(jìn)制字符串處理的問(wèn)題內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://www.php.cn/topic/php7/484545.html