以及如何解决?
如果我执行以下操作:
print unpack("B8", 7) . "\n";
我得到以下输出:
00110111
预期的输出当然是00000111。我已经检查过了,它给了我字符串ascii“ 7”。我可以通过将7包裹在chr()中来修复它:
print unpack("B8", chr(7)) . "\n";
当然,只有当我的输入保持在255以下时,这才起作用,并且我怀疑它可能会降到最低的几千(我也会使“ B8”成为动态)。
我知道我很钝,但是我已经阅读了有关此文档,但他们没有提及。它的反向函数pack()似乎正确解释了第二个参数。
最佳答案
unpack
使用这些字节表示的值将字节字符串解压缩为标量。
$ perl -E'say for unpack("nB8", "\x12\x34\x56")'
4660
01010110
您正在寻找
sprintf("%08B", 7)
关于perl - 为什么perl的unpack()认为第二个参数是字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27652947/