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