<?php
/**
* 将字符串转换成二进制
* @param type $str
* @return type
*/
function StrToBin($str){
//1.列出每个字符
$arr = preg_split('/(?<!^)(?!$)/u', $str);
//2.unpack字符
foreach($arr as &$v){
$temp = unpack('H*', $v);
$v = base_convert($temp[1], 16, 2);
unset($temp);
}
return join(' ',$arr);
}
/**
* 将二进制转换成字符串
* @param type $str
* @return type
*/
function BinToStr($str){
$arr = explode(' ', $str);
foreach($arr as &$v){
$v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16));
}
return join('', $arr);
}
echo StrToBin("余景波Esan");
echo "<br />";
echo BinToStr("111001001011110110011001 111001101001100110101111 111001101011001110100010 1000101 1110011 1100001 1101110");
输出:
111001001011110110011001 111001101001100110101111 111001101011001110100010 1000101 1110011 1100001 1101110
余景波Esan
由于utf-8编码下一个中文字符是占3个字节的,一个字节又是8位,所以转出来的一个汉字就是连续的24个0和1的组合.每个字符是用空格分开的,英文字符是占一个字节,正好是8位,所以Esan就被转换成4组8位的01组合.有意思吧.
字符串与二进制互转
本文介绍了一种使用PHP实现的字符串与二进制之间的转换方法,包括将字符串转换为二进制以及将二进制还原为字符串的过程。通过示例展示了英文字符和中文字符在UTF-8编码下转换的具体细节。
5

被折叠的 条评论
为什么被折叠?



