可變長位元組碼演算法

來源:互聯網
上載者:User
最近在看《大規模WEB服務開發技術》這本書中。書中提到“可變長位元組碼演算法”的壓縮資料的演算法,以達到壓縮資料,減少磁碟IO。
可變長位元組碼演算法:
任意一個位元組的最高位(下標7)均只作為標誌位,而且根據位元組所在位置需要乘以128的相應冪次;

這是他的虛擬碼

仔細研究後,我翻譯成PHP版的:

($n){ $bytes = []; while (true){ array_unshift($bytes, bcmod($n, 128)); if($n < 128){ break; }else{ $n = intval($n/128); } } $bytes[count($bytes) - 1] += 128; return $bytes; } function encode($numbers){ $bytestream = []; foreach ($numbers as $n){ $bytestream = array_merge($bytestream, codeNumber($n)); } return $bytestream; } function decode($bytestream){ $numbers = []; $n = 0; for ($i = 0; $i < count($bytestream); $i++){ if($bytestream[$i] < 128){ $n = 128 * $n + $bytestream[$i]; }else{ $n = 128 * $n + ($bytestream[$i] - 128); array_push($numbers, $n); $n = 0; } } return $numbers; } $a = encode([5, 130, 288]); var_dump($a); var_dump(decode($a));列印出來的內容是:array(5) { [0]=> int(133) [1]=> string(1)"1" [2]=> int(130) [3]=> string(1)"2" [4]=> int(160) }array(3) { [0]=> int(5) [1]=> int(130) [2]=> int(288) } //寫二進位 $h = fopen('ejz3.txt', 'wb'); foreach ($a as $k => $v) { $str3 = pack('H*', sprintf("%02x", $v)); fwrite($h, $str3); } fclose($h); //讀二進位 $str2 = file_get_contents('ejz3.txt'); $str2 = unpack("H*", $str2); $value = str_split($str2[1], 2); foreach ($value as $k => $v) { $value[$k] = base_convert($v, 16, 10); }

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介紹了可變長位元組碼演算法,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.