• 欢迎访问小奏爱吃麻婆豆腐,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 小奏的图站,传送门:http://pic.kanade.site

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

网站搭建 kanade 1年前 (2017-06-12) 469次浏览 2个评论
最近需要把十进制数字转成十六进制的,在PHP里用了dechex函数,但是测试的时候发现有的数怎么转换都是 7fffffff,
试了一下发现只要比 7fffffff 大就会溢出,都会变转成 7fffffff,而hexdec反过来转换 ffffffff 以内的都不会有事,
百度了一下PHPdechex函数说明,发现意思就是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。 


小奏爱吃麻婆豆腐 , 资源部分来自网络,如未标明来源,均为原创,如有侵权,请联系我删除!丨联系邮箱 k@pooi.cc
转载请注明原文链接:PHP 的 dechex 函数最大转换 7fffffff 解决办法
喜欢 (0)
[598743549@qq.com]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 32位地址空间的最高址7fffffff
    你萌你萌你最萌2017-06-14 14:39 回复
  2. 我是64位的系统啊 难道是因为php版本是32的?
    小奏爱吃麻婆豆腐2017-06-14 14:41 回复