【发布时间】:2018-06-05 15:19:03
【问题描述】:
我有一个十六进制数的数组,我想将其转换为二进制数,问题是,在我的代码中,它删除了诸如 0、1、2、3 之类的前导 0。我需要这些前导 0 来处理我的代码的未来部分。有没有一种简单的方法可以将十六进制转换为二进制并在 perl 中保留我的前导 0?
use strict;
use warnings;
my @binary;
my @hex = ('ABCD', '0132', '2211');
foreach my $h(@hex){
my $bin = sprintf( "%b", hex($h));
push @binary, $bin;
}
foreach (@binary){
print "$_\n";
}
运行代码给我
1010101111001101
100110010
10001000010001
编辑:使用打包和解包找到类似的答案,替换
sprint( "%b", hex($h));
和
unpack( 'B*', pack('H*' ($h))
【问题讨论】:
-
欢迎来到 Stack Overflow。什么前导零?请提供minimal reproducible example 示例输入和您所指的代码。你可以edit你的问题。
-
确实!另外,请查看tour 和how-to-ask page,了解更多关于提出可以吸引高质量答案的问题。
标签: perl