ord对于二进制字节处理的强大
分类:热门新闻

在专门的学业中,作者也逐渐通晓到pack,unpack,ord对于二进制字节管理的有力。 下边小编逐个介绍它们。在大家做事中,用到它们的忖度相当少。 小编在前段时间叁个办事中,因为广播发表需求用到二进制流,然后接口用php选择。那时在拍卖时候,查阅不菲材质。因为它们采取确实少之又少,也比相当少朋友专门的工作中会用到它们。 在职业中,我也渐渐领会到pack,unpack,ord对于二进制字节管理的无敌。 上边小编逐条介绍它们。
pack函数表达:本函数用来将质地压缩打包到位的字符串之中。
语法:pack(format,args+)
参数 描述 format 必须。规定在包装数据时所使用的格式。
args+ 可选。规定棉被服装进的三个或多个参数。
字符 说明 a 将字符串空白以 NULL 字符填满
A 将字符串空白以 SPACE 字符 (空格卡塔尔 填满
h 十五进位字符串,低位在前
H 十五进位字符串,高位在前
c 有号字符
C 无号字符
s 有号短整数 (13个人,依Computer的位依次State of Qatar
S 无号短整数 (十五个人,依计算机的位各种卡塔尔国
n 无号短整数 (14个人, 高位在后的各种卡塔尔国
v 无号短整数 (十多少人, 低位在后的次第卡塔尔国
i 有号整数 (依计算机的逐风流倜傥及范围卡塔尔
I 无号整数 (依计算机的逐个及范围卡塔尔国
l 有号长整数 (卅二人,依计算机的位依次卡塔尔国
L 无号长整数 (卅几人,依Computer的位依次卡塔尔国
N 无号短整数 (卅四人, 高位在后的次第卡塔尔国
V 无号短整数 (卅四人, 低位在后的逐后生可畏卡塔尔国
f 单准确浮点数 (依Computer的限定卡塔尔
d 倍正确浮点数 (依Computer的约束卡塔尔国
x 空位
X 倒回壹人
@ 填入 NULL 字符到相对地点
unpack函数表明:本函数用来将位的字符串的素材解压缩
语法:unpack(format,args+)
参数 描述 format 必需。规定在卷入数据时所接收的格式。
args+ 可选。规定被包裹的二个或多个参数。
参数与pack相同。
ord函数表达:归来对应字符的acill码值
语法:ord($character);
实例证实:
复制代码 代码如下:
//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 "=============rnrn";
}
?>

透过上边实例,大家得以看见,相仿字符串,用分化格式存款和储蓄,所侵夺的字节数分裂。 这里也足以看看,以差别格式保存字符能够达存储节省空间。况且启到不可读加密作用。 忽地想到一点,设计数据库字段类型难题,假使叁个字段只是:10位长度整型。我们设置为整形:256*256*256*256 就4个字节,倘使设置为18个长度字符串。那就占10个字节。整个消化摄取空间正是2倍的。 设置科学字符类型对加强数据库性能有过多扶助。呵呵,有一些跑题了……
php管理字节码通信实例解析
恰巧说的pack效用:节省空间、加密格式
上边就那2个做三个实例证实,接口开荒必要:
参数 描述 用户名 20字节,字符型
密码 10字节,字符型
年龄 1字节,无符char型
落草年月 4字节,整型(19780101)
邮箱 50字节,字符串
各字段间用:""分割
威尼斯登录首页,A、PACK封包  复制代码 代码如下:
$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("",packByArr($code));
echo $stream,strlen($stream);

file_put_contents("c:/1.txt",$streamState of Qatar;    //将流保存起来便于下边读取

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";
         }
}
?>

因为用””分割,整个长度是89字节。通过地点输出,有风流洒脱部分字符串输出是能够读取的,此外都曾经化为乱码了。那也是自己说能够保密效果原因。
B、Unpack解包 解包必要坚守,打包情势读取,该读取多少长度,该用什么样类型读取,必得与包装规定同风度翩翩。
复制代码 代码如下:
$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("",$str);
         $atArr=array();
         $i=0;
         foreach ($code as $k=>$v) {
                  $atArr[$k]=unpack($v[0],$Arr[$i]);
                  $i++;
         }
         return $atArr;
}
?>

本文由威尼斯在线注册平台发布于热门新闻,转载请注明出处:ord对于二进制字节处理的强大

上一篇:黄金时代种是PCRE形式(PCRE库是三个兑现了与perl 下一篇:没有了
猜你喜欢
热门排行
精彩图文