最近在开发一个在线工具站,做二进制和字符串互转功能。经过一番折腾最终效果非常赞。话不多说直接上代码
字符串转二进制
/**
* 字符串转换成二进制
* @author xieye
*
* @param {string} $word 待转换的字符-必须是单字符
* @return {string} 二进制
*/
function txtTobinary($word) {
$txtarr = str_split($word);
//定义一个空字符串存储
$bin_str = '';
//转成数字再转成二进制字符串,最后联合起来。
foreach ($txtarr as $value)
$bin_str .= decbin(ord($value));
//正则截取
$bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);
return $bin_str;
}
二进制转字符串
/**
* 字符串转换成二进制
* @author xieye
*
* @param {string} $str_bin 二进制字符串
* @return {string} 转换后得到的字符串
*/
function BinToStr($str_bin){
$chr='';
$str='';
$len = strlen($str_bin);
for($i=0;$i<$len;$i++)
{
if($len >= 16){
$chr.=$str_bin[$i];
if(($i+1)%8==0)
{
$str.=chr(base_convert($chr, 2, 10));
$chr=NULL;
}
}
else{
$str=chr(base_convert($str_bin, 2, 10));
$chr = null;
break;
}
}
if($len >= 16){
$str = iconv('UCS-2', 'UTF-8', $str);
}
return $str;
}
使用范例(字符串转二进制)
$waitTrans = "简单的在线工具";
$waitTrans = explode(" ",$waitTrans);
$transResult = "";
foreach($waitTrans as $value){
$transResult .= BinToStr($value);
}
return $transResult;
//此时的结果应该是:0101000001011010 0111101110000000 0101001101010101 0111011010000100 0101011100101000 0111111010111111 0101110111100101 0101000101110111
使用范例(二进制转字符串)
$waitTrans = "0101000001011010 0111101110000000 0101001101010101 0111011010000100 0101011100101000 0111111010111111 0101110111100101 0101000101110111";
$str = trim($waitTrans);
$len = mb_strlen($str, 'UTF-8');
$rs = '';
for ($i = 0; $i < $len; $i++) {
$chr = mb_substr($str, $i, 1, 'UTF-8');
$rs .= txtTobinary($chr)." ";
}
$transResult = rtrim($rs);
return $$transResult;
//此时的结果应该是:简单的在线工具