エンジニア?プログラマ?

日々考えたことやメモを書いていきます

PHPで2進数から文字列を導出する方法

時々お題に出される2進数(バイナリ)から文字列を導出する系のロジックをPHPで書いてみました。
バリデーションロジック等はそぎ落としてあります。
(PHP7.0で動作確認)

base_convertは大きな数値で利用すると正しく動かないところがミソですかね。
http://php.net/manual/ja/function.base-convert.php

<?php

function bin2str($bin)
{
    $out = '';
    $bin_parts = explode("\n", chunk_split($bin, 8));
    foreach ($bin_parts as $bin_part) {
        $out .= pack('H*', base_convert($bin_part, 2, 16));
    }
    return $out;
}

$bin = '01100111011011110110111101100111011011000110010100101110011000110110111101101101001011110110100101101111';
echo bin2str($bin);