将字符串转换为Base-4

时间:2013-12-05 16:01:33

标签: php type-conversion php-5.4

我想将ASCII字符串转换为Base4(而不是Base64),然后将其转换回来。我能看到如何做到这一点的唯一方法是将字符串转换为二进制,然后拆分位

例如:

$ str ='help'

二进制= 01101000011001010110110001110000

Base4 = 1220121112301300

在PHP中有直接的方法吗?

1 个答案:

答案 0 :(得分:0)

看看base_convert

<?php
    class Base4 {
        public static function to($string) {
            $base4 = '';
            for ($i = 0, $strlen = strlen($string); $i < $strlen; $i++) {
                $base4 .= base_convert(ord($string[$i]), 10, 4);
            }
            return $base4;
        }

        public static function from($base4) {
            $string = '';
            for ($i = 0, $strlen = strlen($base4); $i < $strlen; $i += 4) {
                $string .= chr(base_convert(substr($base4, $i, 4), 4, 10));
            }
            return $string;
        }
    }

    $str = 'help';

    $base4 = Base4::to( $str ); 
    var_dump($base4); //string(16) "1220121112301300"

    $str = Base4::from( $base4 );
    var_dump($str); //string(4) "help"
?>

DEMO