zoukankan      html  css  js  c++  java
  • PHP pack与unpack函数

    pack() 格式字符串

    符号 备注
    a NULL填充字符串
    A SPACE填充字符串
    h 十六进制字符串, 底四位
    H 十六进制字符串, 高四位
    c 有符号字符
    C 无符号字符
    s 有符号短整型 (16位, 主机字节序)
    S 无符号短整型 (16位, 主机字节序)
    n 无符号短整型 (16位, big endian byte order)
    v 无符号短整型 (16位, little endian byte order)
    i 有符号整型 (machine dependent size and byte order)
    I 无符号整型 (machine dependent size and byte order)
    l 有符号长整型 (32位, machine byte order)
    L 无符号长整型 (32位, machine byte order)
    N 无符号长整型 (32位, big endian byte order)
    V 无符号长整型 (32位, little endian byte order)
    f 单晶实型 (machine dependent size and representation)
    d 双晶实型 (machine dependent size and representation)
    x NUL byte
    X Back up one byte
    @ NUL-fill to absolute position

    范例1

    <?php
    echo pack("C3",80,72,80);
    输出: PHP
    注:按参数顺序打包成3个无符号字符
    ?>
    范例2
    <?php
    echo pack("C*",80,72,80,72,72,72,72,72);
    输出:PHPHHHHH
    注: *号代表匹配任意个
    ?>

    范例3

    <?php
    $text = "呵呵呵呵呵";
    $len = strlen($text);
    echo pack("a{$len}", $text);
    注:把$len长个字符打包,这里的$len是字节长度
    ?>

    范例4

    <?php
    $arr_unpack = unpack('Nlen/Ntype/Nsub/Ntotal/a*content', $buf);
    注:解包时如果要取出多个可以用"/"分割
    ?>
  • 相关阅读:
    Golang网络编程-套接字(socket)篇
    Golang并发编程-传统的同步工具"锁"实战篇
    Golang并发编程-select实战篇
    Golang并发编程-channel实战篇
    Golang并发编程-Go程(Goroutine)实战篇
    Jenkins实现简单流程部署代码
    Jenkins权限管理
    Jenkins插件管理篇
    Jenkins部署实战案例
    Golang常见的字符串函数操作实战篇
  • 原文地址:https://www.cnblogs.com/phpfans/p/2227821.html
Copyright © 2011-2022 走看看