1、相关使用函数说明
pack:把数据装入一个二进制字符串
unpack:从二进制字符串对数据进行解包
preg_split :通过一个正则表达式分隔字符串。
explode:把字符串打散为数组
join:把数组元素组合为一个字符串
2、示例
2.1 将字符串转换成二进制
/**
* 将字符串转换成二进制
* @param type $str
* @return type
*/
function StrToBin($str){
// 这边的分割正则不理解,为什么规则是这样的
$arr = preg_split('/(?<!^)(?!$)/u', $str);
//2.unpack字符
foreach($arr as &$v){
//unpack:将二进制字符串解包
//H:十六进制字符串,高位在前,与pack保持一致,也可以使用 * 来自动识别
$temp = unpack('H*', $v);
$v = base_convert($temp[1], 16, 2);
unset($temp);
}
return join(' ',$arr);
}
2.2将二进制转换成字符串
/**
* 将二进制转换成字符串
* @param type $str
* @return type
*/
function BinToStr($str){
$arr = explode(' ', $str);
foreach($arr as &$v){
//把数据装入一个二进制字符串
//strlen() 指定打包多少个 16 进制字符串
//由于指定了 H(16进制,高位在前),所以第二个参数需要使 16 进制字字符串
$v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16));
}
return join('', $arr);
}
2.3 测试示例
//测试
echo StrToBin("php进制测试");;
echo '<br/>';
echo BinToStr("1110000 1101000 1110000 111010001011111110011011 111001011000100010110110 111001101011010110001011 111010001010111110010101");