【发布时间】:2013-12-05 16:01:33
【问题描述】:
我想将一个 ASCII 字符串转换为 Base4(不是 Base64),然后再转换回来。我能看到如何做到这一点的唯一方法是将字符串转换为二进制然后拆分位
例如:
$str = '帮助'
二进制 = 01101000011001010110110001110000
Base4 = 1220121112301300
在 PHP 中有直接的方法吗?
【问题讨论】:
标签: php type-conversion php-5.4
我想将一个 ASCII 字符串转换为 Base4(不是 Base64),然后再转换回来。我能看到如何做到这一点的唯一方法是将字符串转换为二进制然后拆分位
例如:
$str = '帮助'
二进制 = 01101000011001010110110001110000
Base4 = 1220121112301300
在 PHP 中有直接的方法吗?
【问题讨论】:
标签: php type-conversion php-5.4
看看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"
?>
【讨论】: