国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

php使用pack處理二進(jìn)制文件的方法

2020-03-22 19:21:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
php讀寫(xiě)二進(jìn)制文件可以使用pack和unpack函數(shù)。
今天要處理一個(gè)二進(jìn)制文件的問(wèn)題,所以需要用一下,特意了解一下pack的用法,unpack用法與此類(lèi)似。簡(jiǎn)單來(lái)說(shuō),pack函數(shù)就是給一個(gè)目標(biāo)格式,和相應(yīng)的參數(shù),就可以返回二進(jìn)制數(shù)據(jù)了。下面舉例加以說(shuō)明,對(duì)于四個(gè)整數(shù):pack("L4", 0,1,2,3)pack("LLLL", 0,1,2,3)pack("L", 0).pack("L", 1).pack("L", 2).pack("L", 3)上面的處理結(jié)果是一樣的,也就是說(shuō),format是描述后面的數(shù)據(jù)的格式。
至于具體format可以用什么,看看format characters就知道了。
比如一個(gè)30字符的 pack("a30", "http://www.phpstudy.net") ,就是這個(gè)意思,很簡(jiǎn)單pack函數(shù)的官方聲明如下:(PHP 3, PHP 4, PHP 5)pack -- Pack data into binary stringDescriptionstring pack ( string format [, mixed args [, mixed ...]] )Pack given arguments into binary string according to format. Returns binary string containing data. The idea to this function was taken from Perl and all formatting codes work the same as there, however, there are some formatting codes that are missing such as Perl's "u" format code. The format string consists of format codes followed by an optional repeater argument. The repeater argument can be either an integer html' target='_blank'>value or * for repeating to the end of the input data. For a, A, h, H the repeat count specifies how many characters of one data argument are taken, for @ it is the absolute position where to put the next data, for everything else the repeat count specifies how many data arguments are consumed and packed into the resulting binary string. Currently implemented are表格 1. pack() format charactersCode Description a NUL-padded string A SPACE-padded string h Hex string, low nibble first H Hex string, high nibble first c signed char C unsigned char s signed short (always 16 bit, machine byte order) S unsigned short (always 16 bit, machine byte order) n unsigned short (always 16 bit, big endian byte order) v unsigned short (always 16 bit, little endian byte order) i signed integer (machine dependent size and byte order) I unsigned integer (machine dependent size and byte order) l signed long (always 32 bit, machine byte order) L unsigned long (always 32 bit, machine byte order) N unsigned long (always 32 bit, big endian byte order) V unsigned long (always 32 bit, little endian byte order) f float (machine dependent size and representation) d double (machine dependent size and representation) x NUL byte X Back up one byte @ NUL-fill to absolute position看累了英文,下面來(lái)看看對(duì)應(yīng)的中文解釋?zhuān)簆ack()函數(shù)的作用是:將數(shù)據(jù)壓縮成一個(gè)二進(jìn)制字符串。a - NUL-padded string a - NUL- 字符串填滿[padded string] A - SPACE-padded string A - SPACE- 字符串填滿[padded string] h - Hex string, low nibble first h – 十六進(jìn)制字符串,低“四位元”[low nibble first] H - Hex string, high nibble first H - 十六進(jìn)制字符串,高“四位元”[high nibble first] c - signed char c – 帶有符號(hào)的字符 C - unsigned char C – 不帶有符號(hào)的字符 s - signed short (always 16 bit, machine byte order) s – 帶有符號(hào)的短模式[short](通常是16位,按機(jī)器字節(jié)順序) S - unsigned short (always 16 bit, machine byte order) S – 不帶有符號(hào)的短模式[short](通常是16位,按機(jī)器字節(jié)排序) n - unsigned short (always 16 bit, big endian byte order) n -不帶有符號(hào)的短模式[short](通常是16位,按大endian字節(jié)排序) v - unsigned short (always 16 bit, little endian byte order) v -不帶有符號(hào)的短模式[short](通常是16位,按小endian字節(jié)排序) i - signed integer (machine dependent size and byte order) i – 帶有符號(hào)的整數(shù)(由大小和字節(jié)順序決定) I - unsigned integer (machine dependent size and byte order) I – 不帶有符號(hào)的整數(shù)(由大小和字節(jié)順序決定) l - signed long (always 32 bit, machine byte order) l– 帶有符號(hào)的長(zhǎng)模式[long](通常是32位,按機(jī)器字節(jié)順序) L - unsigned long (always 32 bit, machine byte order) L – 不帶有符號(hào)的長(zhǎng)模式[long](通常是32位,按機(jī)器字節(jié)順序) N - unsigned long (always 32 bit, big endian byte order) N – 不帶有符號(hào)的長(zhǎng)模式[long](通常是32位,按大edian字節(jié)順序) V - unsigned long (always 32 bit, little endian byte order) V– 不帶有符號(hào)的長(zhǎng)模式[long](通常是32位,按小edian字節(jié)順序) f - float (machine dependent size and representation) f –浮點(diǎn)(由大小和字節(jié)順序決定) d - double (machine dependent size and representation) d – 雙精度(由大小和字節(jié)順序決定) x - NUL byte x – 空字節(jié)[NUL byte] X - Back up one byte X- 后面一個(gè)字節(jié)[Back up one byte] @ - NUL-fill to absolute position @ - NUL- 添加到一個(gè)絕對(duì)位置[absolute position]示例代碼如下: php $code=array("username"= array("A7","張三adfb12"),"pass"= array("A10","asdf*#1"),"age"= array("C","23"),"birthday"= array("I","19900101"),"email"= array("A50","www.phpstudy.net"));$stream=join("/0",parkByArr($code));echo $stream,strlen($stream);file_put_contents("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";$code=array("username"= array("A20"),"pass"= array("A10"),"age"= array("C"),"birthday"= array("I"),"email"= array("A50"));$stream=file_get_contents("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教程

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

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 潼南县| 东乌珠穆沁旗| 介休市| 增城市| 乌恰县| 达尔| 资阳市| 沿河| 洛川县| 泰宁县| 天峻县| 铁力市| 陆良县| 巴彦淖尔市| 高台县| 中阳县| 桐庐县| 田东县| 铜梁县| 上高县| 青田县| 肇源县| 托里县| 普兰县| 阳山县| 进贤县| 桐城市| 惠水县| 阜阳市| 凤翔县| 伊川县| 白朗县| 福清市| 施甸县| 长治市| 依安县| 东兰县| 诏安县| 毕节市| 蓬安县| 桂阳县|