如何在 Perl 中进行二进制与十进制之间的转换?


在处理二进制数据并在一些简单的应用程序中使用它们时,二进制到十进制和十进制到二进制之间的转换是必要的。在 Perl 中,我们可以通过多种方式进行十进制到二进制以及二进制到十进制的转换。

在本教程中,我们将探讨不同的示例,首先将十进制值转换为二进制值,然后将二进制值转换为十进制值。

Perl 中的十进制到二进制

让我们首先看一个例子,其中我们得到两个十进制值,并且我们希望将它们转换为它们的二进制表示。

例如,假设我们有两个数字,“x = 154”和“y = 10”,我们希望有一个程序可以获取这两个数字并将它们转换为它们的二进制表示。请考虑下面所示的代码,它执行相同的操作。

示例

在此代码中,我们使用 unpack 函数,然后删除尾随零并返回字符串。

sub decimal2binary {
   my $str = unpack("B32", pack("N", shift));
   $str =~ s/^0+(?=\d)//;
   return $str;
}
@res = decimal2binary(154);
print "Binary representation of 154 is: ", @res;
print "\n";
@res = decimal2binary(10);
print "Binary representation of 10 is: ", @res;

输出

如果您在 Perl 编译器上运行上述代码,您将在终端中获得以下输出:

Binary representation of 154 is: 10011010
Binary representation of 10 is: 1010

Perl 中的二进制到十进制

现在让我们考虑另一个示例,我们将把二进制数转换为十进制数。请考虑下面所示的代码,它执行相同的操作。在这里,我们将二进制数“154”和“10”转换为它们的十进制表示。

示例

sub binary2decimal {
   return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}
@res = binary2decimal('10011010');
print "Decimal representation of 10011010 is: ", @res;
print "\n";
@res = binary2decimal('1010');
print "Decimal representation of 1010 is: ", @res;

输出

如果您在 Perl 编译器上运行此代码,您将在终端中获得以下输出:

Decimal representation of 10011010 is: 154
Decimal representation of 1010 is: 10

结论

在本教程中,我们使用两个示例演示了如何在 Perl 中将二进制数转换为其十进制对应值,反之亦然。

更新于: 2023年4月4日

706 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告