Perl unpack 函数

  • 描述

    unpack此函数使用TEMPLATE中指定的格式解压缩二进制字符串STRING。基本上颠倒打包的操作,根据提供的格式返回打包值的列表。您还可以在任何格式字段前添加%<number>前缀,以表示您希望使用16位值(而非该值)的16位校验和。
  • 句法

    以下是此函数的简单语法-
    
    unpack TEMPLATE, STRING
    
  • 返回值

    此函数返回未打包值的列表。下表列出了在TEMPLATE中使用的值。
    字符 描述
    a 用空字符填充的ASCII字符串
    A ASCII字符串用空格填充
    b 位串,从低到低
    B 比特串,最高优先
    c 有符号字符(范围通常为-128至127)
    C 无符号字符(通常为8位)
    d 双精度浮点数
    f 单精度浮点数
    h 十六进制字符串,最低位在前
    H 十六进制字符串,高位在前
    i 有符号整数
    I 无符号整数
    l 有符号长整数
    L 无符号长整数
    n 网络顺序中的短整数
    N 网络顺序中的长整数
    p 指向字符串的指针
    s 有符号的短整数
    S 无符号的短整数
    u 转换为uuencode格式
    v VAX(小尾数)顺序的短整数
    V VAX顺序中的长整数
    x 空字节
    X 表示“返回一个字节”
    @ 用空值填充(ASCII 0)
  • 示例

    以下是显示其基本用法的示例代码-
     
    $bits = pack("c", 65);
    # prints A, which is ASCII 65.
    print "bits are $bits\n";
    $bits = pack( "x" );
    # $bits is now a null chracter.
    print "bits are $bits\n";
    $bits = pack( "sai", 255, "T", 30 );
    # creates a seven charcter string on most computers'
    print "bits are $bits\n";
    
    @array = unpack( "sai", "$bits" );
    
    #Array now contains three elements: 255, A and 47.
    print "Array $array[0]\n";
    print "Array $array[1]\n";
    print "Array $array[2]\n";
    
    执行以上代码后,将产生以下结果-
    
    bits are A
    bits are 
    bits are ?T-
    Array 255
    Array T
    Array 30