php二进制数据打包/解包

2021-11-27

打包二级制数据

// 将参数$agrs打包为$format格式的二进制字符串
pack($format, ...$agrs);
// format由格式代码组成,后面跟着一个可选的重复参数,重复参数可以是一个整数值或者*值来重复到输入数据的末尾
// a, A, h, H格式化代码,其后的重复参数指定了给定数据将会被使用几个字符串
// @格式化代码,其后的数字表示放置剩余数据的绝对定位(之前的数据将会被空字符串填充)
// 其他格式化代码,重复数量指定消耗多少个数据参数并将其打包到生成的二进制字符串中
    // 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  单精度浮点型(机器相关大小)
    // g  单精度浮点型(机器相关大小,小端字节序)
    // G  单精度浮点型(机器相关大小,大端字节序)
    // d  双精度浮点型(机器相关大小)
    // e  双精度浮点型(机器相关大小,小端字节序)
    // E  双精度浮点型(机器相关大小,大端字节序)
    // x  NUL 字节
    // X  回退已字节
    // Z  以 NUL 字节填充字符串空白(自 PHP 5.5 加入)
    // @  NUL 填充到绝对位置

解包二级制数据

// 使用与pack方法相同的$format将二进制字符串$string解包为数组,失败返回false;从二进制字符串的$offset偏移量开始解包
unpack($format, $string, $offset = 0);

 

{/if}