首页 > php教程 > php手册 > 正文

开扒php内核函数,第二篇 hex2bin

php中文网
发布: 2016-06-06 19:42:33
原创
1796人浏览过

我们还是从分析开始吧 先看这个函数的介绍吧 string hex2bin ( string $data ) 如果输入的十六进制字符串是奇数长数或者无效的十六进制字符串将会抛出 E_WARNING 级别的错误。 先看个例子 ?php $hex = hex2bin(6578616d706c65206865782064617461); var_dump(

我们还是从分析开始吧

先看这个函数的介绍吧

string hex2bin ( string $data )

如果输入的十六进制字符串是奇数长数或者无效的十六进制字符串将会抛出 E_WARNING 级别的错误。

先看个例子

立即学习PHP免费学习笔记(深入)”;

$hex = hex2bin("6578616d706c65206865782064617461");
var_dump($hex);
?>

以上例程的输出类似于:

string(16) "example hex data"
登录后复制

大家应该明白了吧

1,循环整个字符串

2,每两个16进制组成一个ascii字符 例如 65=》 0x6

3 ,输出结果

我是这样想的

开扒php内核函数,第二篇 hex2bin

因为上面要判断输入的字符串是否有效,所以加了一些判断,字符范围啊

还有一个关键点就是 为什么要减去 0 和87呢,因为要把16进制的字符转换为真实的数字,所以要减

但是上面的程序写得是有问题的,我是觉得可以优化的

看看php内核是怎样写的

开扒php内核函数,第二篇 hex2bin

我们可以看到,

1,作者没有使用high和low的两个变量,而是用str[i]代替去累加 注意作者是先移位,然后再加,我写的程序是一步到位,这也是一种技巧啊

2,还有一个地方就是j+=2,作者是用了两个j++去替代

3,加法用或运算去代替,比我们的快啊,什么情况可以用或运算呢,就是原始数的低位都是0,加上一个任何数,可以认为两个数进行异运算啦 例如 0xf0 | 0x0f = 0xff = 0xf0+0x0f 啦

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号