当前位置: 首页 > 网站搭建 > 正文

PHP的dechex函数最大转换7fffffff解决办法

最近需要把十进制数字转成十六进制的,在PHP里用了dechex函数,但是测试的时候发现有的数怎么转换都是7fffffff,
试了一下发现只要比7fffffff大就会溢出,都会变转成7fffffff,而hexdec反过来转换ffffffff以内的都不会有事,
百度了一下PHP的dechex函数说明,发现意思就是hexdec可以转换最大7fffffff的数值,而dechex可以转换最大ffffffff,
这和我测试的结果正好相反啊!不知道是不是说明写错了,反正我不用这两个函数了,真的不靠谱啊,
我换了一个任意类型转换的函数:base_convert($a, 10, 16),就完美转换了,下面附上各个转换函数的说明。

十六进制转十进制 hexdec()函数 
var_dump(hexdec("See")); 
var_dump(hexdec("ee")); 
// both print "int(238)" 
var_dump(hexdec("that")); // print "int(10)" 
var_dump(hexdec("a0")); // print "int(160)" 
hexdec 
(PHP 3, PHP 4, PHP 5) 
hexdec -- 十六进制转换为十进制 
说明 
number hexdec ( string hex_string ) 
返回与 hex_string 参数所表示的十六进制数等值的的十进制数。hexdec() 将一个十六进制字符串转换为十进制数。
所能转换的最大数值为 7fffffff,即十进制的 2147483647。
PHP 4.1.0 开始,该函数可以处理大数字,这种情况下,它会返回 float 类型。 
hexdec() 将遇到的所有非十六进制字符替换成 0。这样,所有左边的零都被忽略,但右边的零会计入值中。 

十进制转十六进制 dechex() 函数
echo dechex(10); //输出 a 
echo dechex(47); //输出 2f 
dechex 
(PHP 3, PHP 4, PHP 5) 
dechex -- 十进制转换为十六进制 
说明 
string dechex ( int number ) 
返回一字符串,包含有给定 number 参数的十六进制表示。
所能转换的最大数值为十进制的 4294967295,其结果为 "ffffffff"。 

任意进制转换 base_convert() 函数 
$hexadecimal = 'A37334'; 
echo base_convert($hexadecimal, 16, 2);//输出 101000110111001100110100 
base_convert 
(PHP 3 >= 3.0.6, PHP 4, PHP 5) 

base_convert -- 在任意进制之间转换数字 
说明 
string base_convert ( string number, int frombase, int tobase ) 
返回一字符串,包含 number 以 tobase 进制的表示。number 本身的进制由 frombase 指定。
frombase 和 tobase 都只能在 2 和 36 之间(包括 2 和 36)。
高于十进制的数字用字母 a-z 表示,例如 a 表示 10,b 表示 11 以及 z 表示 35。 

本文固定链接: https://www.kanade.site/index.php/php-de-dechex-han-shu-zui-da-zhuan-huan-7fffffff-jie-jue-ban-fa/ | 小奏爱吃麻婆豆腐

该日志由 kanade 于2017年06月12日发表在 网站搭建 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: PHP的dechex函数最大转换7fffffff解决办法 | 小奏爱吃麻婆豆腐
关键字: , , , , ,
*/