PHP的pack()
函數(shù)支持自定義格式
以下是一些常用的格式代碼:
a
:NUL-padded string,以空字符填充的字符串。A
:SPACE-padded string,以空格填充的字符串。h
:Hex string (low nibble first),低四位優(yōu)先的十六進(jìn)制字符串。H
:Hex string (high nibble first),高四位優(yōu)先的十六進(jìn)制字符串。c
:signed char,有符號(hào)字符。C
:unsigned char,無(wú)符號(hào)字符。s
:signed short (always 16 bit, machine byte order),有符號(hào)短整型(始終為16位,機(jī)器字節(jié)順序)。S
:unsigned short (always 16 bit, machine byte order),無(wú)符號(hào)短整型(始終為16位,機(jī)器字節(jié)順序)。n
:unsigned short (always 16 bit, big endian byte order),無(wú)符號(hào)短整型(始終為16位,大端字節(jié)順序)。v
:unsigned short (always 16 bit, little endian byte order),無(wú)符號(hào)短整型(始終為16位,小端字節(jié)順序)。i
:signed integer (machine dependent size and byte order),有符號(hào)整型(機(jī)器相關(guān)的大小和字節(jié)順序)。I
:unsigned integer (machine dependent size and byte order),無(wú)符號(hào)整型(機(jī)器相關(guān)的大小和字節(jié)順序)。l
:signed long (always 32 bit, machine byte order),有符號(hào)長(zhǎng)整型(始終為32位,機(jī)器字節(jié)順序)。L
:unsigned long (always 32 bit, machine byte order),無(wú)符號(hào)長(zhǎng)整型(始終為32位,機(jī)器字節(jié)順序)。N
:unsigned long (always 32 bit, big endian byte order),無(wú)符號(hào)長(zhǎng)整型(始終為32位,大端字節(jié)順序)。V
:unsigned long (always 32 bit, little endian byte order),無(wú)符號(hào)長(zhǎng)整型(始終為32位,小端字節(jié)順序)。f
:float (machine dependent size and representation),浮點(diǎn)型(機(jī)器相關(guān)的大小和表示)。d
:double (machine dependent size and representation),雙精度浮點(diǎn)型(機(jī)器相關(guān)的大小和表示)。要使用自定義格式,只需在pack()
函數(shù)的第一個(gè)參數(shù)中提供所需的格式代碼。例如:
$binary_data = pack("Na3", 123, "abc"); // 打包一個(gè)無(wú)符號(hào)短整型(大端字節(jié)順序)和一個(gè)3字節(jié)的字符串
請(qǐng)注意,不同的系統(tǒng)和架構(gòu)可能會(huì)對(duì)整數(shù)和浮點(diǎn)數(shù)的大小和字節(jié)順序產(chǎn)生影響,因此在處理二進(jìn)制數(shù)據(jù)時(shí),最好明確指定所需的大小和字節(jié)順序。