这篇文章主要为大家详细介绍了PHP二进制流接口应用pack、unpack、ord 函数用法示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!
在工作中,我也逐渐了解到pack,unpack,ord对于二进制字节处理的强大。 下面我逐一介绍它们。在我们工作中,用到它们的估计不多。 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收。当时在处理时候,查阅不少资料。因为它们使用确实比较少,也很少朋友工作中会用到它们。 在工作中,我也逐渐了解到pack,unpack,ord对于二进制字节处理的强大。 下面我逐一介绍它们。代码如下:
<?php
/* 四海网 www.q1010.com */
//A字符
$str=(pack("A*", "中国"));
echo $str,"=",strlen($str),"字节\n";
getAscill($str);
//H字符
$str=(pack("H*", "fffe"));
echo $str,"=",strlen($str),"字节\n";
getAscill($str);
//C字符
$str=(pack("C*", "55","56","57"));
echo $str,"=",strlen($str),"字节\n";
getAscill($str);
//i字符 短整形 32位 4个字节 64位8个字节
$str=(pack("i", "100"));
echo $str,"=",strlen($str),"字节\n";
getAscill($str);
//s字符 短整形 2个字节
$str=(pack("s", "100"));
echo $str,"=",strlen($str),"字节\n";
getAscill($str);
//l字符 长整形 4个字节
$str=(pack("l", "100"));
echo $str,"=",strlen($str),"字节\n";
getAscill($str);
//f字符 单精度浮点 4个字节
$str=(pack("f", "100"));
echo $str,"=",strlen($str),"字节\n";
getAscill($str);
//d字符 双精度浮点 8个字节
$str=(pack("d", "100"));
echo $str,"=",strlen($str),"字节\n";
getAscill($str);
function getAscill($str)
{
$arr=str_split($str);
foreach ($arr as $v)
{
echo $v,"=",ord($v),"\n";
}
echo "=============\r\n\r\n";
}
?>
代码如下:
<?php
/* 四海网 www.q1010.com */
$code=array(
"username"=>array("A20","张三adfb12"),
"pass"=>array("A10","asdf*#1"),
"age"=>array("C","23"),
"birthday"=>array("I","19900101"),
"email"=>array("A50","zhangsan@163.com"));
$stream=join("\0",packByArr($code));
echo $stream,strlen($stream);
file_put_contents("c:/1.txt",$stream); //将流保存起来便于下面读取
function packByArr($arr) {
$atArr=array();
foreach ($arr as $k=>$v) {
$atArr[]=pack($v[0],$v[1]);
}
return $atArr;
}
function getAscill($str) {
$arr=str_split($str);
foreach ($arr as $v) {
echo $v,"=",ord($v),"\n";
}
}
?>
代码如下:
<?php
/* 四海网 www.q1010.com */
$code=array(
"username"=>array("A20"),
"pass"=>array("A10"),
"age"=>array("C"),
"birthday"=>array("I"),
"email"=>array("A50"));
$stream=file_get_contents("c:/1.txt");
var_dump(packByArr($stream,$code));
function packByArr($str,$code) {
$Arr=explode("\0",$str);
$atArr=array();
$i=0;
foreach ($code as $k=>$v) {
$atArr[$k]=unpack($v[0],$Arr[$i]);
$i++;
}
return $atArr;
}
?>
本文来自:http://www.q1010.com/173/15340-0.html
注:关于PHP二进制流接口应用pack、unpack、ord 函数用法示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。