2014-12-26 133 views
2

我该如何解决?为什么perl的unpack()认为第二个参数是一个字符串?

如果我做到以下几点:

print unpack("B8", 7) . "\n"; 

我得到以下输出:

00110111 

预期的输出是00000111。当然我已经检查,而且它给我ASCII“7 “,字符串。我能够通过在CHR()包装的7很差修复:

print unpack("B8", chr(7)) . "\n"; 

当然,这只会如果我的投入仍低于255工作,我怀疑它可能会进入低千种(我也会做“B8”动态)。

我知道我很呆,但是我已经阅读了关于此的文档,并且他们没有提及它。它的反向函数pack()似乎正确地解释了第二个参数。

回答

5

unpack将这些字节的字符串解压缩为具有由这些字节表示的值的标量。

$ perl -E'say for unpack("nB8", "\x12\x34\x56")' 
4660 
01010110 

您正在寻找

sprintf("%08B", 7) 
+1

你说得对......我一直在使用包这么多最近在这里我得到了隧道视野。谢谢。 –

相关问题