撒的阿坎努斯 发表于 2018-8-31 10:29:14

perl pack和unpack的使用方法

把一个列表或数组以在实际机器存贮格式或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数据类型CcharddoubleffloatiintIunsigned int (or unsigned)llongLunsigned longsshortSunsigned short完整的格式字符见下表。
页: [1]
查看完整版本: perl pack和unpack的使用方法