Я относительно неопытен с Perl, но мой вопрос касается функции распаковки при получении битов для числового значения.Например:
my $bits = unpack("b*", 1);
print $bits;
Это приводит к печати 10001100, что составляет 140 в десятичном виде.В обратном порядке это 49 в десятичном виде.Любые другие значения, которые я пробовал, дают неправильные биты.
Однако, когда я запускаю $ bits через pack, он снова выдает 1.Я что-то упускаю здесь?
Кажется, я пришел к выводам, когда думал, что моя проблема решена.Может быть, я должен кратко объяснить, что я пытаюсь сделать.
Мне нужно преобразовать целочисленное значение, которое может быть размером до 24 бит (суть в том, что оно может быть больше одного байта)немного строкиЭтого можно достичь, используя unpack и pack, как предложено @ikegami, но мне также нужно найти способ преобразовать эту битовую строку обратно в ее исходное целое число (а не в ее строковое представление).упомянуто, я относительно неопытен с Perl, и я пытался безуспешно.
Я нашел то, что кажется оптимальным решением:
my $bits = sprintf("%032b", $num);
print "$bits\n";
my $orig = unpack("N", pack("B32", substr("0" x 32 . $bits, -32)));
print "$orig\n";