我该如何解决?
如果我执行以下操作:
print unpack("B8", 7) . "\n";
我得到以下输出:
00110111
预期的输出当然是00000111.我已经检查了,它给了我ascii" 7",字符串。通过将7包装在chr()中,我能够很好地解决它:
print unpack("B8", chr(7)) . "\n";
当然,只有当我的输入仍然低于255时,这才会起作用,我怀疑它可能会进入低位数千位(我会让#34; B8"动态也是如此)。
我知道我是愚蠢的,但我已经阅读过这方面的文档而他们没有提到它。它的反向函数pack()似乎正确地解释了第二个参数。
答案 0 :(得分:5)
unpack
将一串字节解包为scalars,其值由这些字节表示。
$ perl -E'say for unpack("nB8", "\x12\x34\x56")'
4660
01010110
您正在寻找
sprintf("%08B", 7)