函数名 pack
调用语法 formatstr = pack(packformat, list);
解说 把一个列表或数组以在实际机器存贮格式或C等编程语言使用的格式转化(包装)到一个简单变量中。参数packformat包含一个或多个格式字符,列表中每个元素对应一个,各格式字符间可用空格或tab隔开,因为pack忽略空格。
   除了格式a、A和@外,重复使用一种格式多次可在其后加个整数,如:
    $twoints = pack ("i2", 103, 241);
   把同一格式应用于所有的元素则加个*号,如:
    $manyints = pack ("i*", 14, 26, 11, 83);
   对于a和A而言,其后的整数表示要创建的字符串长度,重复方法如下:
    $strings = pack ("a6" x 2, "test1", "test2");
   格式@的情况比较特殊,其后必须加个整数,该数表示字符串必须的长度,如果长度不够,则用空字符(null)补足,如:
    $output = pack ("a @6 a", "test", "test2");
   pack函数最常见的用途是创建可与C程序交互的数据,例如C语言中字符串均以空字符(null)结尾,创建这样的数据可以这样做:
    $Cstring = pack ("ax", $mystring);
   下表是一些格式字符与C中数据类型的等价关系:

字符   等价C数据类型
C char
d double
f float
i int
I unsigned int (or unsigned)
l long
L unsigned long
s short
S unsigned short

完整的格式字符见下表。

格式字符   描述
a 用空字符(null)补足的字符串
A 用空格补足的字符串
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 回退一个字节
@ 以空字节(null)填充
函数名 unpack
调用语法 @list = unpack (packformat, formatstr);
解说 unpack与pack功能相反,将以机器格式存贮的值转化成Perl中值的列表。其格式字符与pack基本相同(即上表),不同的有:A格式将机器格式字符串转化为Perl字符串并去掉尾部所有空格或空字符;x为跳过一个字节;@为跳过一些字节到指定的位置,如@4为跳过4个字节。下面看一个@和X合同的例子:     $longrightint = unpack ("@* X4 L", $packstring);
   此语句将最后四个字节看作无符号长整数进行转化。下面看一个对uuencode文件解码的例子:

1 : #!/usr/local/bin/perl
2 :
3 : open (CODEDFILE, "/u/janedoe/codefile") ||
4 : die ("Can't open input file");
5 : open (OUTFILE, ">outfile") ||
6 : die ("Can't open output file");
7 : while ($line = <CODEDFILE>) {
8 : $decoded = unpack("u", $line);
9 : print OUTFILE ($decoded);
10: }
11: close (OUTFILE);
12: close (CODEDFILE);

当将pack和unpack用于uuencode时,要记住,虽然它们与UNIX中的uuencode、uudecode工具算法相同,但并不提供首行和末行,如果想用uudecode对由pack的输出创建的文件进行解码,必须也把首行和末行输出(详见UNIX中uuencode帮助)。

pack unpakc相关推荐

  1. 风格化手绘纹理包 CGTrader – Stylized Mix Vol. 41 – Hand Painted Texture Pack

    风格化手绘纹理包 CGTrader – Stylized Mix Vol. 41 – Hand Painted Texture Pack CGTrader–风格化混合第41卷–手绘纹理包 大小解压后: ...

  2. #pragma pack(n) 的作用

    在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int.long.float等)的变量,也可以是一些复合数据类型(如数组.结构.联合等)的数据单元.在结构中,编译器为结构的每个成 ...

  3. 动力电池检测电压c语言编程,动力电池PACK EOL测试系统

    2020年10月以来,新能源汽车接连发生起火.爆炸事故,将其安全问题推向舆论的风口浪尖.安全需求作为人类一种低级别的.最本质的需求,没有安全作为前提,行业的发展将是空中楼阁.说到安全第一时间想到的就是 ...

  4. Windows Azure Pack集成配置SPF

    前面文章介绍了Windows Azure Pack(WAP)的安装以及功能介绍,当然,仅仅安装还是不够的,我们还需要让WAP与SCVMM集成起来,管理我们的Cloud.今天介绍WAP与私有云交互的一个 ...

  5. 私有云管理-Windows Azure Pack

    今天是2014年的第一天,今年的第一篇博客关于私有云,而我在2014年的主要目标也是针对私有云.随着Windows Azure在中国的落地,大家逐渐的熟悉了在Windows Azure中的云体验.而微 ...

  6. #pragma pack 内存对齐

    1. 用法 #pragma pack是C/C++里面设置字节对齐方式的预编译函数 2. 解释 先看下面代码: #include <iostream> using namespace std ...

  7. Html Agility Pack基础类介绍及运用

    Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂的类库,但它的功能确不弱,为解析DOM已经提供了足够强大的功能支持,可以跟jQuery操作DOM媲美:) 基础类和基础 ...

  8. DotNetCore跨平台~dotnet pack打包详细介绍

    回到目录 dotnet pack 命令生成项目并创建 NuGet 包.这个操作的结果是两个 nupkg 扩展名的包.一个包含代码,另一个包含调试符号. 该项目被依赖的 NuGet 包装被添加到 nus ...

  9. 微软私有云Azure Pack实践系列之三创建虚拟机角色

    在Azure Pack for Windows(以下及以后简称WAP)版本中,通过租户门户部署的虚拟机有两种类型,一种是独立虚拟机,另外一种是虚拟机角色. 独立虚拟机类型,和在SCVMM中使用的虚拟机 ...

最新文章

  1. sql%notfound与exception
  2. 华为手机双卡有android,华为Mate 40系列手机入网:双卡5G+安卓系统
  3. Java Review - 并发编程_ConcurrentLinkedQueue原理源码剖析
  4. php 数组元素快速去重
  5. 从 C++ 到 Objective-C 的快速指南 【已翻译100%】
  6. AopContext.currentProxy();为什么能获取到代理对象
  7. 大数据(1)---全球100款大数据工具汇总(前50款)
  8. ireport设置当前页面纸张大小格式:为何每次右键显示的可选项不一样
  9. batch批处理(转载)
  10. XmlSerializer对象
  11. 【更新】ReSharper v2018.3发布
  12. VC2008下编译OpenSSL
  13. 驱动人生解锁“C盘瘦身”功能,助力电脑快速运行
  14. 潦草字体在线识别_潦草字体在线识别_遇到好看的字体?不会识别?教你如何快速识别字体...
  15. ant design java_SpringBoot整合Ant Design Pro进行部署
  16. 无人车传感器 GPS 深入剖析
  17. HITB | 360议题分享:卫星可欺骗 地震警报可伪造
  18. Android studio 中文语言包安装
  19. 网络 DMZ 区和网络安全等级简介
  20. 获取本地外网ip地址

热门文章

  1. 开源库OpenNMT-py使用记录
  2. 机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现
  3. Eclipse安装Android开发环境
  4. Python 中的 if __name__ == __main__ 该如何理解
  5. webstorm代码行数统计_【Rust每周一库】Tokei 统计代码行数等信息的实用工具
  6. jQuery 属性操作——案例:购物车案例模块
  7. MySql提示服务已经启动成功但又提示can’t connect to MySQL server解决方法,mysql服务自动停止处理方法
  8. matlab学习记录之基本操作整理
  9. hdu5391 Zball in Tina Town
  10. char几个字节java_java中的char占几个字节实例分析