PHP的pack()
函数支持自定义格式
以下是一些常用的格式代码:
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),有符号短整型(始终为16位,机器字节顺序)。S
:unsigned short (always 16 bit, machine byte order),无符号短整型(始终为16位,机器字节顺序)。n
:unsigned short (always 16 bit, big endian byte order),无符号短整型(始终为16位,大端字节顺序)。v
:unsigned short (always 16 bit, little endian byte order),无符号短整型(始终为16位,小端字节顺序)。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),有符号长整型(始终为32位,机器字节顺序)。L
:unsigned long (always 32 bit, machine byte order),无符号长整型(始终为32位,机器字节顺序)。N
:unsigned long (always 32 bit, big endian byte order),无符号长整型(始终为32位,大端字节顺序)。V
:unsigned long (always 32 bit, little endian byte order),无符号长整型(始终为32位,小端字节顺序)。f
:float (machine dependent size and representation),浮点型(机器相关的大小和表示)。d
:double (machine dependent size and representation),双精度浮点型(机器相关的大小和表示)。
要使用自定义格式,只需在pack()
函数的第一个参数中提供所需的格式代码。例如:
$binary_data = https://www.yisu.com/ask/pack("Na3", 123, "abc"); // 打包一个无符号短整型(大端字节顺序)和一个3字节的字符串
请注意,不同的系统和架构可能会对整数和浮点数的大小和字节顺序产生影响,因此在处理二进制数据时,最好明确指定所需的大小和字节顺序。