您的位置:首页 > 其它

perl中sprintf函数的使用方法

2016-10-20 20:20 537 查看
对于某些字符串,需要输入为特定的格式,通过sprintf可以很方便的完成,不需要专门进行其他处理。

perl中的sprintf的用法如下:

字符串变成相应的数字eval

sprintf FORMAT, LIST

 $num1=0x498;

$num2  = sprintf("%d",$num1);

print "the num2 zero value is $num2\n";

$num2  = $num2>>2;

print "the num2 second value is $num2\n";

$num2 = sprintf("%x",$num2);

print "the num2 third value is $num2\n";

$num0=0x4e8>>2;

print "the num0 value is $num0\n";

print "Generate regfile.v successfully!\n";

#$BaseAddress = "efH";

#$Offset      = "3eH";

#$BaseAddress =~ s/H//; 

#$Offset      =~ s/H//; 

#$addr_init = "0x$BaseAddress$Offset";

$addr_init = "0xefe";

$addr_ch   = sprintf ("%x",eval_r($addr_init)>>2);

print "Generate $addr_ch successfully!\n";

比如:

$result = sprintf("d",$number);让$number有8个前导零。

 

$rounded = sprintf("%.3f",$number);

让小数点后有3位数字。

 

sprintf允许的如下常用的转换:

 

%%         百分号

%c           把给定的数字转化为字符

%s           字符串

%d           带符号整数,十进制

%u           无符号整数,十进制

%o           无符号整数,八进制

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

%e           浮点数,科学计算法

%f            浮点数,用于固定十进制计数

%g           浮点数,包括%e和%f

 

 %X   like %x, but using upper-case letters

 %E   like %e, but using an upper-case "E"

 %G   like %g, but with an upper-case "E" (if applicable)

 %b   an unsigned integer, in binary

 %B   like %b, but using an upper-case "B" with the # flag

 %p   a pointer (outputs the Perl value's address in hexadecimal)

 %n   special: *stores* the number of characters output so far

      into the next variable in the parameter list

 

通过$1,$2等可以改变顺序:

 printf '%2$d %1$d', 12, 34;      # prints "34 12"

 printf '%3$d %d %1$d', 1, 2, 3;  # prints "3 1 1"

 

printf '<% d>',  12;   # prints "< 12>"

printf '<%+d>',  12;   # prints "<+12>"

printf '<%6s>',  12;   # prints "<    12>"

printf '<%-6s>', 12;   # prints "<12    >"

printf '<s>', 12;   # prints "<000012>"

printf '<%#o>',  12;   # prints "<014>"

printf '<%#x>',  12;   # prints "<0xc>"

printf '<%#X>',  12;   # prints "<0XC>"

printf '<%#b>',  12;   # prints "<0b1100>"

printf '<%#B>',  12;   # prints "<0B1100>"

 

 printf '<%f>', 1;    # prints "<1.000000>"

 printf '<%.1f>', 1;  # prints "<1.0>"

 printf '<%.0f>', 1;  # prints "<1>"

 printf '<%e>', 10;   # prints "<1.000000e+01>"

 printf '<%.1e>', 10; # prints "<1.0e+01>"

 

printf '<%.6d>', 1;      # prints "<000001>"

printf '<%+.6d>', 1;     # prints "<+000001>"

printf '<%-10.6d>', 1;   # prints "<000001    >"

printf '<.6d>', 1;    # prints "<    000001>"

printf '<0.6d>', 1;   # prints "<    000001>"

printf '<%+10.6d>', 1;   # prints "<   +000001>"

printf '<%.6x>', 1;      # prints "<000001>"

printf '<%#.6x>', 1;     # prints "<0x000001>"

printf '<%-10.6x>', 1;   # prints "<000001    >"

printf '<.6x>', 1;    # prints "<    000001>"

printf '<0.6x>', 1;   # prints "<    000001>"

printf '<%#10.6x>', 1;   # prints "<  0x000001>"

 

printf '<%.5s>', "truncated";   # prints "<trunc>"

printf '<.5s>', "truncated"; # prints "<     trunc>"

 

             printf "%2/$d %d/n",    12, 34;               # will print "34

"

             printf "%2/$d %d %d/n", 12, 34;               # will print "34

4/n"

             printf "%3/$d %d %d/n", 12, 34, 56;           # will print "56

4/n"

             printf "%2/$*3/$d %d/n", 12, 34, 3;           # will print " 3

n"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: