分享

perl sprintf()函数详解

 咖啡猫来啦 2014-12-29

下面内容摘自: http://www./perlbc/perljj/1133.html

 

sprintf()函数返回一个格式化字串,格式化习惯是 C 的库函数 sprintf 的是 printf 习惯。用法如下:

  1. sprintf FORMAT, LIST

FORMAT 包含一个带有嵌入的域指示符的文本,LIST 里的元素就是逐一替换到这些域中去的。sprintf 的格式:

   域 含义

  %% 一个百分号

  %c 一个带有给定数字的字符

  %s 一个字串

  %d 一个有符号整数,十进制

  %u 一个无符号整数,十进制

  %o 一个无符号整数,八进制

  %x 一个无符号整数,十六进制

  %e 一个浮点数,科学记数法表示

  %f 一个浮点数,用固定的小数点表示     保留两位小数  %.2f

  %g 一个浮点数,以 %e%f 表示

 

另外,Perl 允许下列广泛支持的转换:

  域 含义

  %x 类似 %x,但使用大写字符

  %E 类似 %e,但使用大写的“E”

  %G 类似 %g,但是带一个大写的“E”(如果正确的话)

  %b 一个无符号整数,二进制

  %p 一个指针(输出十六进制的 Perl 值的地址)

  %n 特殊:把到目前为止输出的字符数放到参数列表中的下一个变量里

 

最后,为了向下兼容(我们的意思就是“向下”),Perl 允许下列不必要的但广泛支持的转换:

   域 含义

   %i %d 的同义词

   %D %ld 的同义词

   %U %lu 的同义词

   %O %lo 的同义词

   %F %f 的同义词

 

Perl 允许下列众所周知的标志出现在 % 和转换字符之间:

  | 含义|

   space 用空格前缀正数

   + 用加号前缀正数

   - 在域内左对齐

   - 用零而不是空格进行右对齐

   # 给非零八进制前缀“0”,给非零十六进制前缀“0x”

   number 最小域宽度

   .number “精度”:浮点数的小数点后面的位数字串最大长度。整数最小长度

   l | | 把整数解释成 C 类型的 long 或者 unsigned long|

   h 把整数解释成 C 类型的 short 或者 unsigned short(如果没有提供标志,那么把整数解释成 C 类型 int 或者 unsigned)

 

还有两个 Perl 相关的标志

    域 含义

    V 把整数解释成 Perl 标准的整数类型

    v 把字串解释成一个整数向量,输出成用点分隔的数字,或者是用任意参数列表里前面带 * 的字串分隔

如果你的 Perl 理解“四倍数”(64位整数),不管是该平台本机支持还是因为你指明 Perl 带着该功能编译,那么字符 d u o x X b i D U O 打印64位整数,并且它们前面可以选择前缀 ll, L,或则 q。比如,%lld LX %qo。
如果 Perl 理解“long double”(要求该平台支持 long double),那么你可以在 e f g E F G 标志前面增加可选的 ll 或者 L。比如,%llf %Lg。
在标志里可以出现数字的位置,都可以用一个星号(“*”)代替,这时候 Perl 使用参数列表里的下一个项作为给出的数字(也就是说,当作域宽度或者精度)。如果通过“*”获取的域宽度是负数,那么它和“-”标志有一样的效果:左对齐。
v 标志可以用于显示任意字串里的序数值:

   sprintf "version is v%vd\n", $^V;      # Perl 的版本

   sprintf "address is %vd\n", %dr;   # IPv4 地址

   sprintf "address is %*vX\n", ":", $addr;   # IPv6 地址

   sprintf "bits are %*vb\n", " ", $bits;   # 随机的位串

例子:
#!/usr/local/bin/perl -w
$a=125;
$a=sprintf("%b",$a)+0;
print $a."\n";

结果:
bash-3.00$ ./TenToTwo.pl
1111101

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多