Предполагая, что у вас есть строка битов "0000111100001111" в $str
, если вы выполните шаг предварительного вычисления:
my $bit_vector = pack "b*", $str;
, вы можете затем использовать vec следующим образом:
$is_set = vec $bit_vector, $offset, 1;
, например, этот код
for (0..15) {
print "$_\n" if vec $bit_vector, $_, 1;
}
будет выводить
4
5
6
7
12
13
14
15
Обратите внимание, что смещения основаны на нуле, поэтому, если вы хотите первый битчтобы быть битом 1, вы должны будете сами добавить / вычесть 1.