Aerys\HPack::huffman_encode PHP Method

huffman_encode() public static method

public static huffman_encode ( $input )
    public static function huffman_encode($input)
    {
        $codes = self::$huffman_codes;
        $lens = self::$huffman_lens;
        $len = \strlen($input);
        $out = \str_repeat("", $len * 5 + 1);
        // max length
        for ($bitcount = $i = 0; $i < $len; $i++) {
            $chr = $input[$i];
            $byte = $bitcount >> 3;
            foreach ($codes[$bitcount % 8][$chr] as $bits) {
                $out[$byte] = $out[$byte] | $bits;
                $byte++;
            }
            $bitcount += $lens[$chr];
        }
        $bytes = $bitcount / 8;
        $e = (int) \ceil($bytes);
        if ($e != $bytes) {
            $out[$e - 1] = $out[$e - 1] | \chr(0xff >> $bitcount % 8);
        }
        return \substr($out, 0, $e);
    }