Blogger Information
Blog 142
fans 5
comment 0
visits 130093
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
浅谈PHP中pack
php开发大牛
Original
617 people have browsed it

pack

?

1

   

string pack ( string $format [, mixed $args [, mixed $... ]] )

   

该函数用来将对应的参数($args)打包成二进制字符串。

其中第一个参数$format,有如下选项(可选参数很多,后面会选几个常用的讲解):


Code

Description

a    以NUL字节填充字符串空白    

A    以SPACE(空格)填充字符串    

h    十六进制字符串,低位在前    

H    十六进制字符串,高位在前    

c    有符号字符    

C    无符号字符    

s    有符号短整型(16位,主机字节序)    

S    无符号短整型(16位,主机字节序)    

n    无符号短整型(16位,大端字节序)    

v    无符号短整型(16位,小端字节序)    

i    有符号整型(机器相关大小字节序)    

I    无符号整型(机器相关大小字节序)    

l    有符号长整型(32位,主机字节序)    

L    无符号长整型(32位,主机字节序)    

N    无符号长整型(32位,大端字节序)    

V    无符号长整型(32位,小端字节序)    

q    有符号长长整型(64位,主机字节序)    

Q    无符号长长整型(64位,主机字节序)    

J    无符号长长整型(64位,大端字节序)    

P    无符号长长整型(64位,小端字节序)    

f    单精度浮点型(机器相关大小)    

d    双精度浮点型(机器相关大小)    

x    NUL字节    

X    回退一字节    

Z    以NUL字节填充字符串空白(new in PHP 5.5)    

@    NUL填充到绝对位置    


这么多参数看下来,我第一次是真心懵逼了,大部分说明都很好理解,但是其中的主机、大端、小端等字节序是什么鬼呢?接下里的内容比较枯燥,但必须理解才行,坚持吧。

字节序是什么?

就是字节的顺序,说白了就是多字节数据的存放顺序(一个字节显然不需要顺序)。

比如A和B分别对应的二进制表示为0100 0001、0100 0010。对于储存字符串AB,我们可以0100 0001 0100 0010也可以0100 0010 0100 0001,这个顺序就是所谓的字节序。

高/低位字节

比如字符串AB,左高右低(我们正常的阅读顺序),A为高字节,B为低字节

高/低地址

假设0x123456是按从高位到底位的顺序储存,内存中是这样存放的:

高地址 -> 低地址
12 -> 34 -> 56

大端字节序(网络字节序)

大端就是将高位字节放到内存的低地址端,低位字节放到高地址端。网络传输中(比如TCP/IP)低地址端(高位字节)放在流的开始,对于2个字节的字符串(AB),传输顺序为:A(0-7bit)、B(8-15bit)。

那么小端字节序自然和大端相反。

主机字节序

表示当年机器的字节序(也就是网络字节序是确定的,而主机字节序是依机器确定的),一般为小端字节序。


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post