首页 / PHP / PHP中十进制和十六进制的转换问题
PHP中十进制和十六进制的转换问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP中十进制和十六进制的转换问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1737字,纯文字阅读大概需要3分钟。
内容图文
![PHP中十进制和十六进制的转换问题](/upload/InfoBanner/zyjiaocheng/236/c7a832f1f70f466f8cc6f1b10be058e3.jpg)
$s = '9C216AFB868C';
$sb=hexdec($s) ;
var_dump( $sb );//1.716673427227E+14
echo '
';
var_dump( dechex($sb) );//6afb868c
十六进制$s 转换成十进制 ,再转回十六进制就出问题。
查 dechex()
转换大小是有限制的。
------------补充---------------------------------------
$s = '9C216AFB868C';
$s 加 1 php中怎么实现了?(十六进制计算)
回复内容:
$s = '9C216AFB868C';
$sb=hexdec($s) ;
var_dump( $sb );//1.716673427227E+14
echo '
';
var_dump( dechex($sb) );//6afb868c
十六进制$s 转换成十进制 ,再转回十六进制就出问题。
查 dechex()
转换大小是有限制的。
------------补充---------------------------------------
$s = '9C216AFB868C';
$s 加 1 php中怎么实现了?(十六进制计算)
可以对比一下,最后的输出结果 6afb868c
正好是 9C216AFB868C
的后面 8 位(忽略大小写)。
在 hexdec 手册中,:
PHP 4.1.0 开始,该函数可以处理 integer 大数字,这种情况下,它会返回 float 类型。
在 dechex 中:
所能转换的最大数值为十进制的 PHP_INT_MAX * 2 + 1 (或 -1):在 32 位平台上是十进制的 4294967295,其 dechex() 的结果为 ffffffff。
第一次的结果 1.716673427227E+14
写成普通格式 171667342722700
,这个结果没有任何问题。
9c216afb868c
转十进制: http://www.wolframalpha.com/input/?i=convert++9c216afb868c+to+base+10
这个数再转换回去是 9c216afb868c
。
171667342722700
转十六进制: http://www.wolframalpha.com/input/?i=171667342722700+to+hex
首先如果你不是32位的计算机的话,这个位数远没有达到PHP所能处理的最大值,PHP里的最大值可以用常量PHP_INT_MAX
查到,在64位计算机下它的值是
echo PHP_INT_MAX; // 9223372036854775807
echo dechex(PHP_INT_MAX); // 7fffffffffffffff
况且你都能成功从16进制转过来,是不可能因为大小问题转不回去的。问题就出在你转出来的这个10进制值上,它是
1.716673427227E+14
这是一个用科学计数法表示的字符串,而dechex
函数是无法识别这个字符串的,php中只会自动将纯数字组成的字符串转换成相应的整形或者浮点。
内容总结
以上是互联网集市为您收集整理的PHP中十进制和十六进制的转换问题全部内容,希望文章能够帮你解决PHP中十进制和十六进制的转换问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。