首頁  >  文章  >  後端開發  >  php如何實作轉換為二進位字串

php如何實作轉換為二進位字串

藏色散人
藏色散人原創
2021-03-22 10:24:132945瀏覽

php實作字串轉換為二進位字串的方法:先建立PHP範例檔;然後透過「function StrToBin($str){...}」方法將字串轉換成二進位即可。

php如何實作轉換為二進位字串

本文操作環境:Windows7系統、PHP7.1版,DELL G3電腦

PHP 字串與二進位相互轉換

在網路上查找到了字串與二進位相互轉換的方法(相關問題描述和問題在下列程式碼中,請耐心查看,謝謝):

  

/** 
* 将字符串转换成二进制 
* @param type $str 
* @return type 
* php 中显示的字符串是多少进制的??
* 例如:$str = '你好'; // 这边的 '你好' 是什么进制数据(我知道他是字符串!)??
*/  
function StrToBin($str){  
    //1.列出每个字符
    // 这边的分割正则也不理解
    // (?<!^) 后瞻消极断言
    // (?!$) 前瞻消极断言
    // 看意思好像说的是:不以^开头(但是这边 ^ 又没有被转义...),不以 $ 结尾(同上)
    // 然后得到的记过就是字符串一个个被分割成了数组(郁闷)
    // 求解释
    $arr = preg_split(&#39;/(?<!^)(?!$)/u&#39;, $str);  
    //2.unpack字符  
    foreach($arr as &$v){
        /**
         * unpack:将二进制字符串解包(英语原文:Unpack data from binary string)
         * H: 英语描述原文:Hex string, high nibble first 
         * 这段代码做了什么??
         */
        $temp = unpack(&#39;H*&#39;, $v); // 这边被解析出来的字符串为什么是 16进制的??
        $v = base_convert($temp[1], 16, 2);  
        unset($temp);  
    }  
  
    return join(&#39; &#39;,$arr);  
}  
  
/** 
* 讲二进制转换成字符串 
* @param type $str 
* @return type 
*/  
function BinToStr($str){  
    $arr = explode(&#39; &#39;, $str);  
    foreach($arr as &$v){  
        // 他做了什么??
        $v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16));  
    }  
  
    return join(&#39;&#39;, $arr);  
}  
  
echo StrToBin("php二次开发:www.php2.cc");;  
echo &#39;<br/>&#39;;  
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 = &#39;这边是二进制数字&#39;;
$hex = bin2hex($bin_number );
// 由于指定了 H(16进制,高位在前),所以第二个参数需要使 16 进制字字符串
// strlen($hex) 指定打包多少个 16 进制字符串
// 也可以使用 * 来自动识别
// 结果就是:二进制字符串了
$bin_str = pack(&#39;H&#39; . strlen($hex) , $hex);
<=>
$dec = bindec($bin_number);
$hex = dechex($dec);
$bin_str = hex2bin($hex);
unpack 用法:
//  转换作用:2进制字符串 => 16进制字符串
$str = unpack(&#39;H*&#39; , &#39;陈&#39;); 
<=>
$str = bin2hex(&#39;陈&#39;);

【推薦學習:PHP影片教程

以上是php如何實作轉換為二進位字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn