- Perl 基础
- Perl - 首页
- Perl - 简介
- Perl - 环境
- Perl - 语法概述
- Perl - 数据类型
- Perl - 变量
- Perl - 标量
- Perl - 数组
- Perl - 哈希表
- Perl - IF...ELSE
- Perl - 循环
- Perl - 运算符
- Perl - 日期和时间
- Perl - 子程序
- Perl - 引用
- Perl - 格式
- Perl - 文件 I/O
- Perl - 目录
- Perl - 错误处理
- Perl - 特殊变量
- Perl - 编码规范
- Perl - 正则表达式
- Perl - 发送邮件
- Perl 高级
- Perl - 套接字编程
- Perl - 面向对象
- Perl - 数据库访问
- Perl - CGI 编程
- Perl - 包和模块
- Perl - 进程管理
- Perl - 嵌入式文档
- Perl - 函数引用
- Perl 有用资源
- Perl - 常见问题解答
- Perl - 快速指南
- Perl - 有用资源
- Perl - 讨论
Perl pack 函数
描述
此函数评估 LIST 中的表达式,并将它们打包到由 EXPR 指定的二进制结构中。格式使用下表中所示的字符指定:
每个字符之后可以可选地跟一个数字,该数字指定要打包的值类型的重复计数,即根据格式,可以是半字节、字符甚至位。* 值将重复列表中剩余的所有值。可以使用 unpack 函数解包值。
例如,a5 表示预期五个字母。b32 表示预期 32 位。h8 表示预期 8 个半字节(或 4 个字节)。P10 表示结构长度为 10 个字节。
语法
以下是此函数的简单语法:
pack EXPR, LIST
返回值
此函数使用 TEMPLATE 返回 LIST 中数据的打包版本,以确定其编码方式。
下表给出了在 TEMPLATE 中使用的值。
序号 | 字符和描述 |
---|---|
1 | a 用空字符填充的 ASCII 字符串 |
2 | A 用空格填充的 ASCII 字符串 |
3 | b 位串,最低位优先 |
4 | B 位串,最高位优先 |
5 | c 带符号字符(范围通常为 -128 到 127) |
6 | C 无符号字符(通常为 8 位) |
7 | d 双精度浮点数 |
8 | f 单精度浮点数 |
9 | h 十六进制字符串,最低位优先 |
10 | H 十六进制字符串,最高位优先 |
11 | i 带符号整数 |
12 | I 无符号整数 |
13 | l 带符号长整数 |
14 | L 无符号长整数 |
15 | n 网络字节序的短整数 |
16 | N 网络字节序的长整数 |
17 | p 指向字符串的指针 |
18 | s 带符号短整数 |
19 | S 无符号短整数 |
20 | u 转换为 uuencode 格式 |
21 | v VAX(小端序)中的短整数 |
22 | V VAX 顺序的长整数 |
23 | x 空字节 |
24 | X 指示“后退一个字节” |
25 | @ 用空值(ASCII 0)填充 |
示例
以下示例代码显示其基本用法:
#!/usr/bin/perl -w $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, T and 30. 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
perl_function_references.htm
广告