惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
Docker
N
Netflix TechBlog - Medium
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
Check Point Blog
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
IT之家
IT之家
月光博客
月光博客
U
Unit 42
K
Kaspersky official blog
T
Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
GbyAI
GbyAI
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Security @ Cisco Blogs
MyScale Blog
MyScale Blog
大猫的无限游戏
大猫的无限游戏
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Schneier on Security
S
Secure Thoughts
The Register - Security
The Register - Security
B
Blog RSS Feed
The Last Watchdog
The Last Watchdog
P
Palo Alto Networks Blog
爱范儿
爱范儿
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic
阮一峰的网络日志
阮一峰的网络日志
L
LINUX DO - 热门话题
C
Cisco Blogs
Spread Privacy
Spread Privacy
F
Full Disclosure
博客园 - 聂微东
T
The Blog of Author Tim Ferriss

博客园 - guoadou

新的开始 《项目管理艺术》读书笔记 —— 决定做什么的常见不良决策一览 《项目管理艺术》读书笔记 —— 项目规划的三种观点 《IF》 - Joseph Rudyard Kipling 论信息系统的架构设计 【转】系统架构设计师考试大纲(2009) nginx error_page 404 用 php header 无法跳转 The Elements of Programming Style 导出MySQL数据库结构的PHP脚本 轻松面试 搞定技术奇才 Cyworld Values & Principles 通过创建SCHEMABINDING VIEW提高JOIN的速度 长的很像Cyworld的QQ [北京][赛我网]HTML高级工程师 - guoadou - 博客园 [招聘] 韩国企业招聘Java .NET 开发人员 utf8_to_unicode in PHP document.body.scrollTop总是零的原因 unicode_to_utf8 in PHP [新闻]Cyworld.com.cn开始公测
hex2bin in PHP
guoadou · 2005-05-12 · via 博客园 - guoadou

需要把格式为 0xd4d9b2e2cad4d2bbcfc2 的字符串转换为文本,但是PHP 中只找到bin2hex方法 --  Convert binary data into hexadecimal representation. 以下是hex2bin 的实现 :) 

    /**
    * 从16进制字符串中的两个字符返回一个byte
    * @param $str - 包含字符的字符串
    * @param $start - 第一个字符的位置
    * @return string 分析后的byte
    * @throw Exception
    
*/
 
    
private static function _FromHexPair($str,$start = 0)
    
{
        $c1 
= $str[$start];        //取第一个字符
        $c2 = $str[$start + 1];    //第二个
        
        $c1 
= ord($c1);
        $c2 
= ord($c2);
        
        
//字符对应的值
        $i1;    
        $i2;
        
        
//$c1=>$i1
        if($c1>=ord('0')&& $c1<=ord('9'))
            $i1 
=$c1-ord('0');
        
else if($c1>=ord('A')&&$c1<=ord('F'))
            $i1 
=$c1-ord('A')+10;
        
else if($c1>=ord('a')&&$c1<=ord('f'))
            $i1 
=$c1-ord('a')+10;
        
else throw new exception("unexpected char 1:" . $c1 . " @ " . $start);
        
        
//$c2=>$i2
        if($c2>=ord('0')&&$c2<=ord('9'))
            $i2 
=$c2-ord('0');
        
else if($c2>=ord('A')&&$c2<=ord('F'))
            $i2 
=$c2-ord('A')+10;
        
else if($c2>=ord('a')&&$c2<=ord('f'))
            $i2 
=$c2-ord('a')+10;
        
else throw new exception("unexpected char 2:" . $c2 . " @ " . ($start+1));
        
        
return chr(($i1<<4+ $i2);    //返回$i1*16+$i2
    }

    
    
/**
    * 把十六进制字符串转换成文本字符串
    * @param $str - 要转换的字符串,不能为null.
    * @return string
    * @throw Exception
    
*/
  
    
public static function hex2bin($str)
    
{
        
//判断长度
        if((strlen($str)%2!= 0 )
            
throw new exception("str.Length % 2 != 0");
        
//计算byte[]的长度
        $len = strlen($str)/2;
        $str_result 
= '';
        
//循环复制
        for($i=0;$i<$len;$i++)
        
{
            $str_result .
= self::_FromHexPair($str,$i*2);
        }

        
return $str_result;
    }

#-------- 2007-05-28 update --------#
原来很简单的一个问题 被自己搞的很复杂 - -;;

function hex2bin($hex_string) {
    
return pack('H*', $hex_string);
}