加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中处理具有不同基数的命令行参数

发布时间:2020-12-15 23:24:09 所属栏目:大数据 来源:网络整理
导读:当在Perl程序中用作文字时,数字的处理方式与C中的相同:“0x”前缀表示十六进制,“0”前缀表示八进制,没有前缀表示十进制: $perl -E 'print 0x23 . "n"'35$perl -E 'print 023 . "n"'19$perl -E 'print 23 . "n"'23 我想使用相同的表示法将命令行参数传
当在Perl程序中用作文字时,数字的处理方式与C中的相同:“0x”前缀表示十六进制,“0”前缀表示八进制,没有前缀表示十进制:

$perl -E 'print 0x23 . "n"'
35
$perl -E 'print 023 . "n"'
19
$perl -E 'print 23 . "n"'
23

我想使用相同的表示法将命令行参数传递给Perl.例如如果我传递23,我想将字符串参数转换为十进制值(23).如果我传递0x23,我想转换为十六进制值(35),023将转换为八进制(19).有没有内置的方法来处理这个?我知道hex()和oct(),但是他们将没有前缀的数字分别解释为十六进制/八进制(不是十进制).遵循这个约定,似乎我想要一个dec()函数,但我不认为存在.

解决方法

从 http://answers.oreilly.com/topic/419-convert-binary-octal-and-hexidecimal-numbers-in-perl/开始:

print "Gimme an integer in decimal,binary,octal,or hex: ";
$num = <STDIN>;
chomp $num;
exit unless defined $num;
$num = oct($num) if $num =~ /^0/; # catches 077 0b10 0x20
printf "%d %#x %#o %#bn",($num) x 4;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读