• 技术文章 >后端开发 >PHP问题

    php转换为二进制的实现方法

    藏色散人藏色散人2020-08-31 09:39:54原创1269

    php转换为二进制的实现方法:首先创建一个PHP示例文件;然后定义一个StrToBin方法;接着通过unpack方法解析字符串;最后通过“base_convert”函数转换为二进制即可。

    推荐:《PHP视频教程

    PHP 字符串 与 二进制相互转换

    在网络上查找到了字符串与二进制相互转换的方法(相关问题描述和问题在下列代码中,请耐心查看,谢谢):

    /** 
    * 将字符串转换成二进制 
    * @param type $str 
    * @return type 
    * php 中显示的字符串是多少进制的??
    * 例如:$str = '你好'; // 这边的 '你好' 是什么进制数据(我知道他是字符串!)??
    */  
    function StrToBin($str){  
        //1.列出每个字符
        // 这边的分割正则也不理解
        // (?<!^) 后瞻消极断言
        // (?!$) 前瞻消极断言
        // 看意思好像说的是:不以^开头(但是这边 ^ 又没有被转义...),不以 $ 结尾(同上)
        // 然后得到的记过就是字符串一个个被分割成了数组(郁闷)
        // 求解释
        $arr = preg_split('/(?<!^)(?!$)/u', $str);  
        //2.unpack字符  
        foreach($arr as &$v){
            /**
             * unpack:将二进制字符串解包(英语原文:Unpack data from binary string)
             * H: 英语描述原文:Hex string, high nibble first 
             * 这段代码做了什么??
             */
            $temp = unpack('H*', $v); // 这边被解析出来的字符串为什么是 16进制的??
            $v = base_convert($temp[1], 16, 2);  
            unset($temp);  
        }  
      
        return join(' ',$arr);  
    }  
      
    /** 
    * 讲二进制转换成字符串 
    * @param type $str 
    * @return type 
    */  
    function BinToStr($str){  
        $arr = explode(' ', $str);  
        foreach($arr as &$v){  
            // 他做了什么??
            $v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16));  
        }  
      
        return join('', $arr);  
    }  
      
    echo StrToBin("php二次开发:www.php2.cc");;  
    echo '<br/>';  
    echo BinToStr("1110000 1101000 1110000 111001001011101010001100 111001101010110010100001 111001011011110010000000 111001011000111110010001 111011111011110010011010 1110111 1110111 1110111 101110 1110000 1101000 1110000 110010 101110 1100011 1100011");

    上述的函数是怎样实现二进制和字符串的相互转换的??

    -------分隔符-------

    关于 pack 和 unpack 我已经清楚了!顺便分享下:

    就用这边例子,说说我理解到的部分:

    pack用法:

    // 二进制数字 => 二进制字符串
    $bin_number = '这边是二进制数字';
    $hex = bin2hex($bin_number );
    // 由于指定了 H(16进制,高位在前),所以第二个参数需要使 16 进制字字符串
    // strlen($hex) 指定打包多少个 16 进制字符串
    // 也可以使用 * 来自动识别
    // 结果就是:二进制字符串了
    $bin_str = pack('H' . strlen($hex) , $hex);
    <=>
    $dec = bindec($bin_number);
    $hex = dechex($dec);
    $bin_str = hex2bin($hex);
    unpack 用法:
    //  转换作用:2进制字符串 => 16进制字符串
    $str = unpack('H*' , '陈'); 
    <=>
    $str = bin2hex('陈');

    以上就是php转换为二进制的实现方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:php pdf如何转换成图片 下一篇:apache无法加载php配置怎么办
    大前端线上培训班

    相关文章推荐

    • PHP如何实现将文件转二进制输出• php图片转成二进制的方法• php怎么将图片转成二进制?• php如何把图片转换成二进制字符串

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网