乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何使用php實(shí)現(xiàn)asc、binary以及hex之間的互換

       Ralf_Jones 2006-08-29
      轉(zhuǎn)貼 - 如何使用php實(shí)現(xiàn)asc、binary以及hex之間的互換

      廢話少說,我們直接進(jìn)入代碼:

      function asc2bin($str) {
      $text_array = explode("\r\n", chunk_split($str, 1));
      for ($n = 0; $n < count($text_array) - 1; $n++) {
      $newstring .= substr("0000".base_convert(ord($text_array[$n]), 10, 2), -8);
      }
      $newstring = chunk_split($newstring, 8, " ");
      return $newstring;
      }

      function bin2asc($str) {
      $str = str_replace(" ", "", $str);
      $text_array = explode("\r\n", chunk_split($str, 8));
      for ($n = 0; $n < count($text_array) - 1; $n++) {
      $newstring .= chr(base_convert($text_array[$n], 2, 10));
      }
      return $newstring;
      }

      以上兩個(gè)函數(shù)是實(shí)現(xiàn)asc和binary之間的幻想轉(zhuǎn)化的。

      重點(diǎn)說幾個(gè)函數(shù)吧。

      其中的chunk_split函數(shù)的原型如下:

      string chunk_split(string string, int [chunklen] , string [end]);

      函數(shù)描述:

      本函數(shù)將字符串變成小段供其它函數(shù)使用。例如,base64_encode。內(nèi)定是參數(shù) chunklen (76 個(gè)字符) 每隔 76 個(gè)字符插入 end ("\r\n")。傳回新字符串而不更動(dòng)原字串。

      舉個(gè)簡單的例子:

      <?

      $string=chunk_split("abcdefghijklmnopqrstuvwxyz",5);
      echo $string;

      ?>

      將會(huì)顯示如下格式的字符串:
      abcde fghij klmno pqrst uvwxy z



      還有一個(gè)需要注意的是base_convert函數(shù)。它是一個(gè)數(shù)學(xué)函數(shù)。函數(shù)描述如下:

      string base_convert(string number, int frombase, int tobase);

      本函式將數(shù)字字串 number 從以 frombase 進(jìn)位轉(zhuǎn)換到以 tobase 進(jìn)位。本式能夠處理的由以二進(jìn)位到以三十六進(jìn)位之間的進(jìn)位方式。在十進(jìn)位之前都是以數(shù)字表示,而在超過十進(jìn)位之后就用英文字母表示。例如十六進(jìn)位個(gè)位數(shù)依序?yàn)?123456789abcdef,10 的順序是第十七個(gè),這時(shí)才進(jìn)一位。而三十六進(jìn)位 a 是第十個(gè)、b 為第十一個(gè)、z 為第三十六個(gè)、10 是第三十七個(gè),這時(shí)才進(jìn)位。

      弄懂了上面兩個(gè)函數(shù),我給出的轉(zhuǎn)換函數(shù)相信大家也能看明白了。。。

      我們接著看:

      function asc2hex($str) {
      return chunk_split(bin2hex($str), 2, " ");
      }

      function hex2asc($str) {
      $str = str_replace(" ", "", $str);
      for ($n=0; $n<strlen($str); $n+=2) {
      $newstring .= pack("C", hexdec(substr($str, $n, 2)));
      }

      return $newstring;
      }

      以上實(shí)現(xiàn)了asc到十六進(jìn)制之間的轉(zhuǎn)換。第一個(gè)函數(shù)很簡單,我就不多說了。第二個(gè)函數(shù)需要注意下面2個(gè)函數(shù):

      string str_replace(string needle, string str, string haystack);

      這個(gè)函數(shù)是將haystack字符串中的needle子串替換成str字符串。

      pack函數(shù)在perl時(shí)代就是一個(gè)非常有用的函數(shù),在php里雖然沒有那么重要但是也不可小視的。
      string pack(string format, mixed [args]...);

      把一個(gè)列表或數(shù)組以在實(shí)際機(jī)器存貯格式或C等編程語言使用的格式轉(zhuǎn)化(包裝)到一個(gè)簡單變量中。

      具體用法大家可以參考perl或者php中的函數(shù)說明。


      再來:


      function binary2hex($str) {
      $str = str_replace(" ", "", $str);
      $text_array = explode("\r\n", chunk_split($str, 8));
      for ($n = 0; $n < count($text_array) - 1; $n++) {
      $newstring .= base_convert($text_array[$n], 2, 16);
      }
      $newstring = chunk_split($newstring, 2, " ");
      return $newstring;
      }

      function hex2binary($str) {
      $str = str_replace(" ", "", $str);
      $text_array = explode("\r\n", chunk_split($str, 2));
      for ($n = 0; $n < count($text_array) - 1; $n++) {
      $newstring .= substr("0000".base_convert($text_array[$n], 16, 2), -8);
      }
      $newstring = chunk_split($newstring, 8, " ");
      return $newstring;
      }


      上面兩個(gè)是對(duì)一六進(jìn)制和二進(jìn)制之間的轉(zhuǎn)換。大部分函數(shù)都講過了。很簡單。


      看到這里,大家對(duì)php的柑橘而是什么呢?我想不只是強(qiáng)大可以形容吧。

      需要完整代碼的可以發(fā)email到:sqlinject@hotmail.com。


      謝謝大家對(duì)s8s8的支持!

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多