问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP 如何将字符串、数字等转换为二进制数组?

发布网友 发布时间:2022-04-06 03:32

我来回答

2个回答

懂视网 时间:2022-04-06 07:53

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

推荐:《PHP视频教程》

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

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

/** 
* 将字符串转换成二进制 
* @param type $str 
* @return type 
* php 中显示的字符串是多少进制的??
* 例如:$str = '你好'; // 这边的 '你好' 是什么进制数据(我知道他是字符串!)??
*/ 
function StrToBin($str){ 
 //1.列出每个字符
 // 这边的分割正则也不理解
 // (?<!^) 后瞻消极断言
 // (?!$) 前瞻消极断言
 // 看意思好像说的是:不以^开头(但是这边 ^ 又没有被转义...),不以 $ 结尾(同上)
 // 然后得到的记过就是字符串一个个被分割成了数组(郁闷)
 // 求解释
 $arr = preg_split('/(?<!^)(?!$)/u', $str); 
 //2.unpack字符 
 foreach($arr as &$v){
 /**
  * unpack:将二进制字符串解包(英语原文:Unpack data from binary string)
  * H: 英语描述原文:Hex string, high nibble first 
  * 这段代码做了什么??
  */
 $temp = unpack('H*', $v); // 这边被解析出来的字符串为什么是 16进制的??
 $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("php二次开发:www.php2.cc");; 
echo '<br/>'; 
echo BinToStr("1110000 1101000 1110000 111001001011101010001100 111001101010110010100001 111001011011110010000000 111001011000111110010001 111011111011110010011010 1110111 1110111 1110111 101110 1110000 1101000 1110000 110010 101110 1100011 1100011");

上述的函数是怎样实现二进制和字符串的相互转换的??

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

关于 pack 和 unpack 我已经清楚了!顺便分享下:

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

pack用法:

// 二进制数字 => 二进制字符串
$bin_number = '这边是二进制数字';
$hex = bin2hex($bin_number );
// 由于指定了 H(16进制,高位在前),所以第二个参数需要使 16 进制字字符串
// strlen($hex) 指定打包多少个 16 进制字符串
// 也可以使用 * 来自动识别
// 结果就是:二进制字符串了
$bin_str = pack('H' . strlen($hex) , $hex);
<=>
$dec = bindec($bin_number);
$hex = dechex($dec);
$bin_str = hex2bin($hex);
unpack 用法:
// 转换作用:2进制字符串 => 16进制字符串
$str = unpack('H*' , '陈'); 
<=>
$str = bin2hex('陈');

热心网友 时间:2022-04-06 05:01

<?php
$data = "PHP";
print_r(unpack("C*",$data));
?>

输出:
Array
(
[1] => 80
[2] => 72
[3] => 80
)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我在石家庄我的显卡坏了过了保修期我想问一下哪里可以修? 梦见蹲了半天的茅房 2016寒假小结作文怎么写 荣耀9,为什么电量现在越来越不耐用,之前更 哪些是易燃易爆场所 加油站有哪些消防安全隐患 说美国和苏联可以毁灭地球若干次的说法是怎么算出来的? 上证指数的年线怎么看? 早教中心需要什么证件 开办早教中心需要哪些许可证 PHP中怎么以二进制形式表示数字? php如何将二进制字符串转换成二进制流? 在配置完 PHP 环境后,Apache 无法启动,为什么 Apache & PHP为何配置不成功? apache + php配置问题 windows平台 apache 无法解析PHP?怎么办? apache加载php模块无法启动 apache启动时无法加载模块c:/php/php_mysql.dll win7下安装Apache2.4+php5.6之后,不能加载php扩展模块 apache加载不了php,这个问题我问了好多次了都没解决,感谢那些热心的网友。 apache无法加载php,但是能访问到自己建的php文件,index为公司测试,info是自己创建的,麻烦高手解决下! PHP+Apache配置出现错误, php 过滤HTML格式但得保留图片的正则表达式 在PHP中,用正则表达式替换html标题外内容 能用PHP 去掉所有html标签里的部分属性吗 在一段html中 有下面一段代码 我怎样用php+正则表达式将其去掉 &lt;div id=&#92;&quot;displaypagenum&#92;&quot;&gt;&lt;p&gt;&lt;center&gt; PHP正则表达式过滤HTML代码的问题 PHP,如何用正则表达式去掉HTML中链接的target? php正则表达式过滤某些HTML标签代码 正则表达式如何过滤HTML标签中的属性值 求解 使用php将1000位的十进制大数转成二进制 PHP 字符串 二进制 php如何让变量里的值为二进制,我转换了但是一运算就变成十进制了,右移&gt;&gt;之后就变成十进制了 批处理 php 二进制进位算法 php中能输出二进制数据么 PHP关于获取二进制数据流转换为文件的方法 php接收二进制文件怎么替换里面的内容 求教PHP二进制产生随机数过程中出现的问题 php怎样将二进制流存到文件中? php5 无法定位程序输入点g_open于动态链接库libglib-2.0-0.dll上 php版本是5.6.23,扩展oracle数据库php_oci_12c.dll时发现无法定位程序输入点OCIStmtGetNextResult 我打开php 的php-cgi.exe,为什么出现“无法定位程序输入点OCILobread2于动态连接库OCI.dll 上”? php.exe无法找到入口 无法定位程序输入点mysql_slave_query与动态链接库LIBMYSQL.dll上,新手学php,求助 无法定位程序输入点wmemcpy_s 于动态链接库上msvcr100.dll上 电脑开机后出现一个对话框说&#39;无法定位输入点程序&#39;这是怎么回事? 无法定位程序输入点_ftol2于动态链接库msvct.dll上 无法定位程序输入点wrapper_url_decode于动态链接库php4ts.dll上 无法定位程序输入点 与动态链接库mmcbase.dll上 无法定位程序输入点php_info_print_module于动态链接库php5ts.all上 无法定位程序输入点PowerGetActiveScheme于动态链接库powrprof.dll