【发布时间】:2014-11-09 16:30:46
【问题描述】:
我正在解析一个文件,该文件由十进制和十六进制值组成,以“:”分隔:
foreach $line (<INFO>) {
my ($seq_no, $size_in_bytes, $Hitcount, $buffer) = split /:/, $line;
# $size in_bytes is a hexadecimal value.
print "check 1 $size_in_bytes\n"; # printing some value in hexadecimal
$size_in_bytes = hex($size_in_bytes);
print "check 2 $size_in_bytes\n"; # Printing ZERO??
}
我也尝试了以下方法,但仍然只给出零。
$dec_num = sprintf("%d", hex($num));
你能告诉我如何将字符串转换为十进制
【问题讨论】:
-
你能上传几行例子吗?与 Apache/modules 有什么联系?
-
调试传递给
hex()的值——例如,如果有前导空格,它将返回0:hex(" 12") == 0,但hex("12") == 18。无需使用sprintf将数字字符串化。 -
添加
use Data::Dumper; $Data::Dumper::Useqq=$Data::Dumper::Terse=1; print "check 0 " . Dumper($size_in_bytes);并向我们展示至少几行输入和输出 -
我建议您的数据中的冒号前后可能有空格。尝试像这样拆分
split /\s*:\s*/, $line。 -
@user991282:最好一开始就把
split弄对,而不是做错并破解修复程序。
标签: perl perl-module mod-perl