|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Ezhguroff 2:5020/400 19 Jan 2002 04:26:47 To : Edward Avernin Subject : Re: Упаковка данных(принцип записи в файл) -------------------------------------------------------------------------------- Привет! "Edward Avernin" <edward@atnet.ru> сообщил(а): АЕ>> В твоем случае BITS==8 EA> В том то и дело что в моем случае BITS==12, эти ф-ии взяты из программы EA> в которых определен этот макрос BITS. Я конечно могу залить всю прогу, EA> если надо. Hо если всё-таки предположить EA> что BITS==12 . То как тогда рассуждать ... ? В таком случае подпрограмма рассчитана не на вывод символов, а на вывод значений в диапазоне [0..0xFFF] Я буду писать значения в шестнадцатеричном виде - в битах слишком неудобно. Предположим выводятся 2 значения: 0xE95 и 0xA71 Выводим 0xE95: output_bit_buffer|=0xE95<<(32-12-output_bit_count); // (0xE95<<20)==0xE9500000 output_bit_count+=12; // 12 putc(output_bit_buffer>>24, out); // putc(0xE9, out); output_bit_buffer<<=8; // 0x50000000 output_bit_count-=8; // 4 Выводим 0xA71: output_bit_buffer|=0xA71<<(32-12-output_bit_count); // (0x50000000|(0xA71<<16))==0x5A710000 output_bit_count+=12; // 16 putc(output_bit_buffer>>24, out); // putc(0x5A, out); output_bit_buffer<<=8; // 0x71000000 output_bit_count-=8; // 8 putc(output_bit_buffer>>24, out); // putc(0x71, out); output_bit_buffer<<=8; // 0x00000000 output_bit_count-=8; // 0 Таким образом на вход подано два двенадцатибитовых значения 0xE95, 0xA71, а в файл записано три байта 0xE9, 0x5A, 0x71. С уважением, Андрей. -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6488eb48f0de.html, оценка из 5, голосов 10
|