Распакуйте немного из двоичной строки с помощью Ruby

#ruby #binary #unpack

#ruby #двоичный #распакуйте

Вопрос:

Я использую String::unpack для распаковки множества целых чисел и удвоения из двоичного потока. Как я могу распаковать один бит из этого битового потока? Я не могу найти конкретную директиву для декодирования отдельных битов с помощью unpack.

Ответ №1:

Распаковка может доходить до уровня байтов. Вы могли бы прочитать байт без знака, используя формат ‘C’, а затем вы можете использовать битовые маски для запроса отдельных карт.

Комментарии:

1. Рискую ли я выйти за границы, когда бит находится в конце потока, и прочитать еще 7 бит, используя директиву ‘C’?

2. @aliekens Я так не думаю. К моменту поступления потока в ruby он должен состоять из байтов. Такого понятия, как частичный байт, не существует. Если данные состоят всего из 9 бит, то они будут представлены в виде 2 байт, а остальные будут дополнены нулями.