php对应 c int16,PHP中十进制 和十六进制的转换问题
$s = '9C216AFB868C';
$sb=hexdec($s) ;
var_dump( $sb );//1.716673427227E+14
echo '
';
var_dump( dechex($sb) );//6afb868c
十六進制$s 轉(zhuǎn)換成十進制 ,再轉(zhuǎn)回十六進制就出問題。
查 dechex() 轉(zhuǎn)換大小是有限制的。
------------補充---------------------------------------
$s = '9C216AFB868C';
$s 加 1 php中怎么實現(xiàn)了?(十六進制計算)
回復內(nèi)容:
$s = '9C216AFB868C';
$sb=hexdec($s) ;
var_dump( $sb );//1.716673427227E+14
echo '
';
var_dump( dechex($sb) );//6afb868c
十六進制$s 轉(zhuǎn)換成十進制 ,再轉(zhuǎn)回十六進制就出問題。
查 dechex() 轉(zhuǎn)換大小是有限制的。
------------補充---------------------------------------
$s = '9C216AFB868C';
$s 加 1 php中怎么實現(xiàn)了?(十六進制計算)
可以對比一下,最后的輸出結(jié)果 6afb868c 正好是 9C216AFB868C 的后面 8 位(忽略大小寫)。
在 hexdec 手冊中,:
PHP 4.1.0 開始,該函數(shù)可以處理 integer 大數(shù)字,這種情況下,它會返回 float 類型。
在 dechex 中:
所能轉(zhuǎn)換的最大數(shù)值為十進制的 PHP_INT_MAX * 2 + 1 (或 -1):在 32 位平臺上是十進制的 4294967295,其 dechex() 的結(jié)果為 ffffffff。
第一次的結(jié)果 1.716673427227E+14 寫成普通格式 171667342722700,這個結(jié)果沒有任何問題。
9c216afb868c 轉(zhuǎn)十進制: http://www.wolframalpha.com/input/?i=convert++9c216afb868c+to+base+10
這個數(shù)再轉(zhuǎn)換回去是 9c216afb868c。
171667342722700 轉(zhuǎn)十六進制: http://www.wolframalpha.com/input/?i=171667342722700+to+hex
首先如果你不是32位的計算機的話,這個位數(shù)遠沒有達到PHP所能處理的最大值,PHP里的最大值可以用常量PHP_INT_MAX查到,在64位計算機下它的值是
echo PHP_INT_MAX; // 9223372036854775807
echo dechex(PHP_INT_MAX); // 7fffffffffffffff
況且你都能成功從16進制轉(zhuǎn)過來,是不可能因為大小問題轉(zhuǎn)不回去的。問題就出在你轉(zhuǎn)出來的這個10進制值上,它是
1.716673427227E+14
這是一個用科學計數(shù)法表示的字符串,而dechex函數(shù)是無法識別這個字符串的,php中只會自動將純數(shù)字組成的字符串轉(zhuǎn)換成相應的整形或者浮點。
相關標簽:php
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請注明出處,感謝您的尊重!
總結(jié)
以上是生活随笔為你收集整理的php对应 c int16,PHP中十进制 和十六进制的转换问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样更改个性签名
- 下一篇: 掘金 php,PHP基本语法