如何从包功能打印结果?



我喜欢验证包的作用。我有以下代码可以尝试一下。

$bits = pack 'N','134744072';

如何打印位?

我做了以下工作:

printf ("bits = %032b n", $bits);  

但它不起作用。

谢谢!!

如果你想要一个数字的二进制表示形式,请使用

my $num = 134744072;
printf("bits = %032bn", $num); 

如果需要字节字符串的二进制表示形式,请使用

my $bytes = pack('N', 134744072);
printf("bits = %sn", unpack('B*', $bytes)); 

Devel::P eek 模块(随 Perl 一起提供(允许你检查 Perl 对变量的表示。 当您处理二进制数据而不是可打印的字符串时,这可能比原始print更有用。

#!/usr/bin/perl
use strict;
use warnings;
use Devel::Peek qw(Dump);
my $bits = pack 'N','134744072';
Dump($bits);

它产生如下输出:

SV = PV(0xaedb20) at 0xb15650
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0xb06630 "10101010"
CUR = 4
LEN = 10

开头的"SV"表示这是"标量值"(而不是数组或哈希值(的转储。

'SV = PV' 表示此标量包含一串字节(而不是整数或浮点值(。

"PV = 0xb06630"是指向这些字节所在位置的指针。

"\10\10\10\10"\0 可能是您感兴趣的位。 双引号字符串表示构成此字符串内容的字节。 在字符串中,您通常会看到字节被解释为ASCII,因此字节65小数点将显示为"A"。所有不可打印的字符都以八进制显示,前面带有

因此,您的$bits变量包含 4 个字节,每个八进制"10"是十六进制0x08。

LEN 和 CUR 告诉你 Perl 分配了 10 个字节的存储空间,目前正在使用其中的 4 个字节(所以length($bits)会返回 4 个(。

最新更新