Как записать невыровненные данные в двоичный поток в C ++ - PullRequest
0 голосов
/ 17 января 2012

Чтобы уменьшить размер данных по сети, я хотел бы записать в сеть только те биты, которые могут содержать значение.Например, если значение может содержать 40 бит, я хочу записать в поток 40 бит, а не 64 бита.Или, если значение может быть сохранено в 3 битах, я просто хотел бы записать 3 бита в двоичный поток, а не 8 бит, с 5 битами как 0.

Мой вопрос заключается в том, как мне записать невыровненные данныев бинарный поток в C ++?

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Поток работает с байтами, а не битами, поэтому вам придется работать с кратными 8 битам.Вы можете записать 40 бит в поток, потому что это ровно 5 байтов.

0 голосов
/ 17 января 2012

Вы придумываете свою собственную схему сжатия и почти наверняка сделаете хуже, чем сделали эксперты.

Возможно, ваша сеть уже выполняет сжатие, поэтому вы можете выполнять работу, которая уже выполняется.

Ваш вопрос очень не хватает деталей, что делает лучший ответ невозможным.

...