php park、unpark、ord 函数使用方法(二进制流接口应用实例)

2019-04-09 14:20:16丽君
密码 10字节,字符型 年龄 1字节,无符char型 出生年月 4字节,整型(19800101) 邮箱 50字节,字符串 各字段间用:""分割A、PACK封包

<?php
$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("",parkByArr($code));
echo $stream,strlen($stream);



file_put_contents("c:/1.txt",$stream);//将流保存起来便于下面读取

function parkByArr($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";
}
}

因为用””分割,整个长度是89字节。通过上面输出,有一些字符串输出是可以读取的,其它都已经变成乱码了。这也是我说可以保密效果原因。
B、Unpack解包
解包需要按照,打包方式读取,该读取多长,该用什么类型读取,必须与打包规定一样。

<?php
$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(parkByArr($stream,$code));
function parkByArr($str,$code)
{
$Arr=explode("",$str);
$atArr=array();
$i=0;
foreach ($code as $k=>$v)
{
$atArr[$k]=unpack($v[0],$Arr[$i]);
$i++;
}
return $atArr;
}

相关文章 大家在看