php转换为二进制的实现方法

php转换为二进制的实现方法:首先创建一个PHP示例文件;然后定义一个StrToBin方法;接着通过unpack方法解析字符串;最后通过“basq j Ye_convert”函数转换为二进制即可。

php转换为二进制的实现方法

推荐:《PHP视频教程》

PHP 字符串 与 二进制相互转换

在网络上查找到了字符串与二进制相互转换的方法(相关问题描述和问题2 h H在下列代码中,请耐心查看,谢谢):

/**
* 将字符串转换成二进制
* @param type $str
* @return type
*{ w 7 $ D php 中显示的字符串是多少进制的J s ! 9 6 b Y |??
* 例如:$str = '你好'; // 这边的 '你好' 是什么进制数据(我知道他是字符串!K W g l t 2 m C)??
*/
function StrToBin($str){
//1.列出每个字符
// 这边的分割正则也不理解
// (?<!^) 后瞻消极断言
// (?!$) 前瞻消极断言
// 看意思好像说的是:不以^开头(但是这边 ^ 又没有被转义...),不以 $ 结尾( N P . * v R同上)
// 然后得到的记过就是字符串一个个被分割成了数组(郁闷)
// 求解释
$arr = preg_split('/(?<!^)(?!$)/u', $str);
//2.unpack字符
foreach($arr as &am^ T f 0 F / j |p;$v){
/**
* unpack:将二进制字符串解包(英语原文:Unpack data from bY ~ w ` 6 Z _ 1inary string)
* H: 英语a F 7 K ` . R )描述原文:HeD N / w s 0 4x string, high nibble first
* 这段代码做了什么??
*/
$temp = unpack('H*', $h + v , n =v); // 这边被解析出来的字符串为什1 ) Q 8么是 16进制的??
$v = base_convert($temp[1], 1K U b P Z L A6, 2);
unset($temp);
}
return join(' ',$arr);
}
/**
* 讲二进制转换成字符串
* @param type $str
* @return type
*/
function BinToStr($str){
$arr = explode(' ', $str);
foreach($arr as &$v){
// 他做了什么^ 3 9 k | ] , y +??
$v = pack("H".strlen(base_convert($v, 2, 16)), base_cq  d Zon4 m 3 ^ j K (vert($v, 2, 16));
}
return join('',M Y i ] 6 U g $arr);
}
echo StrToBin("php二次开发:www.php2.cc");;
echo '<br/>';
echo BinToStr("1110000 1101000 1110000 111$ w j t ) ` h g {001001011101010001100 111001101010110010100001 111001011011110010000000 111001011000111110010001 111011111011110010011010 1110111 1110111 1110111 101110 1110000 1101000 1110000 110010 101110 1100011 1100011");

上述的函数是怎样实现二9 P 8 0 / Y K ] n进制和字符串的相互转换的??

-------分隔符-------

关于 pack 和 unpack 我已经清楚了q ? m L , ^!顺便分享下:

就用这边例子,说说我理解到的部分:

pack用法:

// 二进制数字 => 二进制字符串
$bin_number = '这边是二进G q P 6制数字'{ , A 0 X | D ; !;
$hex = bin2hex($bin_number );
// 由于指定了 H(16进制/ z 7 y @,高位在I & + g C前),所以第二个参数需要使 16 进制字字符串
// strlen($hex) 指定打包多少个 16 进制字符串
// 也可以使用 * 来自x # 5  g 6 q z S动识别
// 结果就是:二进制字符串了
$bin_strE A ] | 0 E % = pac# K { M & Yk('H' . strlen($hex) , $hex);
<=>
$dec = bindec($bin_number);
$hex = dec6 %  e U A 6 theZ F U k L 8 v G Rx($dec);
$bin_str = hex2bin(l 1  B$hex);
unpack 用法:
//  转换作用:2进制字符串 => 16} W ` 8进制字符串
$str = unpack('H*' , '陈');
<=>
$str = bin2hex('陈');

以上就是php转换为二进制的实现方法的详细内容。