|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Max Alekseyev 2:5015/60 06 Jun 2002 14:23:36 To : Evgen Tarasenok Subject : Уаковать 5-ти битные данные в 8 бит -------------------------------------------------------------------------------- Replying to a message of Evgen Tarasenok to All: ET> Есть данные в виде потока байт, но в каждом байте только младшие пять ET> разрядов значащие, а три старших рахряда всегда нулевые. Из-за этого ET> при передаче и хранении теряются 3/8 от общего объёма. ET> Поскажите пожалуйста оптимальный алгоритм, чтобы быстро и эффективно ET> упаковывать такие данные в 8 бит, а то у меня уже кризис идей. :-( ET> Полноценное архивирование применять не хочется, чтобы не перегружать ET> проц. Hавскидку: void sendbyte(unsigned char byte) { // процедура посылки байта } void send5bits(unsigned char five) { static unsigned int buffer = 0, // буфер, который накапливает биты bits = 0; // количество битов в буфере buffer = (buffer << 5) | five; bits += 5; if(bits>=8) { bits -= 8; sendbyte((buffer>>bits)&0xFF); } } Regards, ш.ш Max ~ --- FleetStreet 1.27.3.8 * Origin: (2:5015/60) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/18133cff71bb.html, оценка из 5, голосов 10
|