过去几个小时里,我一直在围绕这个问题猛撞我的头脑;这里有很多类似的问题,但没有什么相同的,我看到的技术似乎都没有工作。将字节转换为Perl中的二进制位序列
我有一个从我的程序中输入生成的字节序列 - 每个字节表示BMP图像中像素的红色,绿色或蓝色值。我基本上需要提取每个字节的比特流表示;即该字节的二进制序列。
我一直在使用pack()
和unpack()
的许多不同变化,但我没有得出正确的结果。
例如:
sub convertToBinary {
my $str = unpack("B32", pack("N", shift));
return $str;
}
我也试过:
my $str = unpack("b8", shift);
,
my $str = unpack("B8", shift);
,
my $str = unpack("b*", shift);
和许多其他变化;他们中没有一个似乎在工作。我不觉得应该很难提取一个字节的bitpattern,但只有八个'1'或'0',对吧?
我在这里错过了什么?
您能举出可能的输入和期望输出的具体例子吗? – cjm 2012-07-27 23:17:24
当然 - 这会有所帮助。目标是找到在.BMP中编码的字符 - 在速记中进行练习。 .BMP中的每个像素都有一个红色,绿色和蓝色值,每个值都用一个字节的代码表示。在每个字节内,最低有效位将被设置为零,然后作为消息的一部分用新值进行编码。我大部分都有我需要的东西,但我很难提取每个字节的按位值。 – Nik 2012-07-28 00:25:48
你不想要位表示。您可以使用按位&检查是否设置了一位。也就是说,你对你的输入仍然非常模糊 – ikegami 2012-07-28 00:32:11