一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

park,unpark,ord這3個(gè)函數(shù),在我們工作中,用到它們的估計(jì)不多。 我在最近一個(gè)工作中,因?yàn)橥ㄓ嵭枰玫蕉M(jìn)制流,然后接口用php接收。當(dāng)時(shí)在處理時(shí)候,查閱不少資料。因?yàn)樗鼈兪褂么_實(shí)比較少,也很少朋友工作中會(huì)用到它們。 在工作中,我也逐漸了解到park,unpark,ord對(duì)于二進(jìn)制字節(jié)處理的強(qiáng)大。 下面我逐一介紹它們。

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

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

 

語(yǔ)法:pack(format,args+)

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

 

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

 

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

語(yǔ)法:unpack(format,args+)

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

參數(shù)與park相同。

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

語(yǔ)法:ord($character);

實(shí)例說(shuō)明:
復(fù)制代碼 代碼如下:
<?php
//A字符
$str=(pack("A*", "中國(guó)"));
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個(gè)字節(jié) 64位8個(gè)字節(jié)
$str=(pack("i", "100"));
echo $str,"=",strlen($str),"字節(jié)/n";
getAscill($str);

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

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

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

//d字符 雙精度浮點(diǎn) 8個(gè)字節(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";
}


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

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

下面就這2個(gè)做一個(gè)實(shí)例說(shuō)明,接口開(kāi)發(fā)要求:

參數(shù)描述
用戶名20字節(jié),字符型
密碼10字節(jié),字符型
年齡1字節(jié),無(wú)符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);//將流保存起來(lái)便于下面讀取

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

因?yàn)橛谩?0”分割,整個(gè)長(zhǎng)度是89字節(jié)。通過(guò)上面輸出,有一些字符串輸出是可以讀取的,其它都已經(jīng)變成亂碼了。這也是我說(shuō)可以保密效果原因。
B、Unpack解包
解包需要按照,打包方式讀取,該讀取多長(zhǎng),該用什么類型讀取,必須與打包規(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)用實(shí)例),轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 91视频麻豆 | 久久免费99精品国产自在现线 | 玖玖爱视频在线 | 色综合日韩 | 国产老妇xxxxxbb亚洲老妇 | 五月婷婷色丁香 | 国产高清国内精品福利 | 欧美成人亚洲综合精品欧美激情 | 久久青草精品免费资源站 | 狠狠色婷婷狠狠狠亚洲综合 | 怡红院日韩 | 女人被爽到呻吟娇喘的视频动态图 | 日韩精品一区二区三区中文 | 99爱在线精品视频网站 | 久久中文网 | 激情五月婷婷久久 | 日本一区免费在线 | 久久久91精品国产一区二区三区 | a级精品国产片在线观看 | 成人中文字幕一区二区三区 | 黄视频在线观看www 黄视频在线观看免费 | 日本特级a禁片在线播放 | 在线看色 | 久草中文在线 | 精品国产污网站在线观看15 | 久久久久久88色愉愉 | 一级毛片免费不卡 | 五月婷六月丁香 | 丁香婷五月 | 国产精品久久久久免费视频 | 伊人色综合网 | 欧美成人三级伦在线观看 | 亚洲人成一区二区三区 | 六月丁香婷婷天天在线 | 成人免费视频在线观看 | 中文字幕一区二区精品区 | 欧美精品国产制服第一页 | 婷婷色综合久久 | 国产精品一区二区四区 | 欧美人与牲动交xxxxbbbb | 国产第2页 |