#ruby #binary #unpack
#ruby #двоичный #распакуйте
Вопрос:
Я использую String::unpack
для распаковки множества целых чисел и удвоения из двоичного потока. Как я могу распаковать один бит из этого битового потока? Я не могу найти конкретную директиву для декодирования отдельных битов с помощью unpack.
Ответ №1:
Распаковка может доходить до уровня байтов. Вы могли бы прочитать байт без знака, используя формат ‘C’, а затем вы можете использовать битовые маски для запроса отдельных карт.
Комментарии:
1. Рискую ли я выйти за границы, когда бит находится в конце потока, и прочитать еще 7 бит, используя директиву ‘C’?
2. @aliekens Я так не думаю. К моменту поступления потока в ruby он должен состоять из байтов. Такого понятия, как частичный байт, не существует. Если данные состоят всего из 9 бит, то они будут представлены в виде 2 байт, а остальные будут дополнены нулями.