天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php park、unpark、ord 函數(shù)使用方法(二進(jìn)制流接口應(yīng)用實例)

park,unpark,ord這3個函數(shù),在我們工作中,用到它們的估計不多。 我在最近一個工作中,因為通訊需要用到二進(jìn)制流,然后接口用php接收。當(dāng)時在處理時候,查閱不少資料。因為它們使用確實比較少,也很少朋友工作中會用到它們。 在工作中,我也逐漸了解到park,unpark,ord對于二進(jìn)制字節(jié)處理的強(qiáng)大。 下面我逐一介紹它們。

park,unpark,ord函數(shù)使用介紹

park函數(shù)說明:本函數(shù)用來將資料壓縮打包到位的字符串之中。

 

語法:pack(format,args+)

參數(shù)描述
format必需。規(guī)定在包裝數(shù)據(jù)時所使用的格式。
args+可選。規(guī)定被包裝的一個或多個參數(shù)。

 

字符說明
a將字符串空白以 NULL 字符填滿
A將字符串空白以 SPACE 字符 (空格) 填滿
h十六進(jìn)位字符串,低位在前
H十六進(jìn)位字符串,高位在前
c有號字符
C無號字符
s有號短整數(shù) (十六位,依計算機(jī)的位順序)
S無號短整數(shù) (十六位,依計算機(jī)的位順序)
n無號短整數(shù) (十六位, 高位在后的順序)
v無號短整數(shù) (十六位, 低位在后的順序)
i有號整數(shù) (依計算機(jī)的順序及范圍)
I無號整數(shù) (依計算機(jī)的順序及范圍)
l有號長整數(shù) (卅二位,依計算機(jī)的位順序)
L無號長整數(shù) (卅二位,依計算機(jī)的位順序)
N無號短整數(shù) (卅二位, 高位在后的順序)
V無號短整數(shù) (卅二位, 低位在后的順序)
f單精確浮點數(shù) (依計算機(jī)的范圍)
d倍精確浮點數(shù) (依計算機(jī)的范圍)
x空位
X倒回一位
@填入 NULL 字符到絕對位置

 

unpark函數(shù)說明:本函數(shù)用來將位的字符串的資料解壓縮

語法:unpack(format,args+)

參數(shù)描述
format必需。規(guī)定在包裝數(shù)據(jù)時所使用的格式。
args+可選。規(guī)定被包裝的一個或多個參數(shù)。

參數(shù)與park相同。

ord函數(shù)說明:返回對應(yīng)字符的acill碼值

語法:ord($character);

實例說明:
復(fù)制代碼 代碼如下:
<?php
//A字符
$str=(pack("A*", "中國"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);
//H字符
$str=(pack("H*", "fffe"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);
//C字符
$str=(pack("C*", "55","56","57"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);

//i字符 短整形 32位 4個字節(jié) 64位8個字節(jié)
$str=(pack("i", "100"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);

//s字符 短整形 2個字節(jié)
$str=(pack("s", "100"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);

//l字符 長整形 4個字節(jié)
$str=(pack("l", "100"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);

//f字符 單精度浮點 4個字節(jié)
$str=(pack("f", "100"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);

//d字符 雙精度浮點 8個字節(jié)
$str=(pack("d", "100"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);

function getAscill($str)
{
$arr=str_split($str);
foreach ($arr as $v)
{
echo $v,"=",ord($v),"/n";
}
echo "=============/r/n/r/n";
}


通過上面實例,我們可以看到,相同字符串,用不同格式存儲,所占用的字節(jié)數(shù)不同。 這里也可以看到,以不同格式保存字符可以達(dá)存儲節(jié)省空間。而且啟到不可讀加密效果。 突然想到一點,設(shè)計數(shù)據(jù)庫字段類型問題,如果一個字段只是:10位長度整型。我們設(shè)置為整形:256*256*256*256 就4個字節(jié),如果設(shè)置為10個長度字符串。那就占10個字節(jié)。整個消化空間就是2倍的。 設(shè)置正確字符類型對提高數(shù)據(jù)庫性能有很多幫助。呵呵,有點跑題了……

php處理字節(jié)碼通訊實例分析
剛剛說的pack作用:節(jié)省空間、加密格式

下面就這2個做一個實例說明,接口開發(fā)要求:

參數(shù)描述
用戶名20字節(jié),字符型
密碼10字節(jié),字符型
年齡1字節(jié),無符char型
出生年月4字節(jié),整型(19800101)
郵箱50字節(jié),字符串
各字段間用:"/0"分割
A、PACK封包
復(fù)制代碼 代碼如下:
<?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("/0",parkByArr($code));
echo $stream,strlen($stream);


復(fù)制代碼 代碼如下:
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";
}
}

因為用”/0”分割,整個長度是89字節(jié)。通過上面輸出,有一些字符串輸出是可以讀取的,其它都已經(jīng)變成亂碼了。這也是我說可以保密效果原因。
B、Unpack解包
解包需要按照,打包方式讀取,該讀取多長,該用什么類型讀取,必須與打包規(guī)定一樣。
復(fù)制代碼 代碼如下:
<?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("/0",$str);
$atArr=array();
$i=0;
foreach ($code as $k=>$v)
{
$atArr[$k]=unpack($v[0],$Arr[$i]);
$i++;
}
return $atArr;
}

php技術(shù)php park、unpark、ord 函數(shù)使用方法(二進(jìn)制流接口應(yīng)用實例),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本夜爽爽一区二区三区 | 九九热视频 这里有精品 | 欧美性狂猛bbbbbbxxxx | 国产亚洲精品久久久久小 | 最近最新中文字幕MV高清在线 | 亚洲欧美中文字幕网站大全 | 色宅男看片午夜大片免费看 | 亚洲婷婷天堂综合国产剧情 | 色橹橹欧美在线观看视频高清 | 日韩亚洲欧洲在线rrrr片 | 久久综合伊人 magnet | 欧美 日韩 亚洲 在线 | 色宅男看片午夜大片免费看 | 黑色丝袜美女被网站 | 国产成人综合高清在线观看 | 麻豆精品传媒卡一卡二传媒短视频 | 亚洲精品久久区二区三区蜜桃臀 | 国产WW久久久久久久久久 | 色姊姊真舒服 | 亚洲香蕉视频在线播放 | 久久足恋网 | 日本国产精品无码一区免费看 | 久热这里在线精品 | 乌克兰内射私拍 | 国产免费不卡 | 暖暖视频中国在线观看免费韩国 | 多男同时插一个女人8p | 动漫护士被乳羞羞漫 | YELLOW视频在线观看免费版高清 | 一级毛片视频免费 | 久久re视频精品538在线 | 亚洲AV 日韩 国产 有码 | 护士12p| 全黄h全肉细节文在线观看 全黄H全肉细节文短篇 | 日本xxx在线观看免费播放 | 97资源站超碰在线视频 | 人妻换人妻AA视频 | 日韩精品特黄毛片免费看 | 久拍国产在线观看 | 亚洲日韩在线天堂一 | 国产AV国产精品国产三级在线L |