Perl从二进制数中删除数字

时间:2015-03-23 21:31:34

标签: perl

我想从24-bit binary号码中删除几位数字并将其转换为18-bit binary个号码。

例如:

如果是二进制数

bin24=111100111011111000100111

我想删除位23:2215:147:6,输出应为

bin18=110011111110100111

我知道我可以使用substr()执行此操作并连接。只是想知道我能否在一行中做到这一点?。

2 个答案:

答案 0 :(得分:7)

$bin18 = join '', unpack('x2 a6 x2 a6 x2 a6', $bin24);

答案 1 :(得分:1)

my $bin18 = reverse join '', (reverse ($bin24 =~ /([01])/g))[0 .. 5, 8 .. 13, 16 ..21];

以及主题的其他变体。