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 = pack("Na3", 123, "abc"); // 打包一個無符號短整型(大端字節順序)和一個3字節的字符串
請注意,不同的系統和架構可能會對整數和浮點數的大小和字節順序產生影響,因此在處理二進制數據時,最好明確指定所需的大小和字節順序。