
Сообщение от
fasked
Ну вообще, если попадется байт 0x80 (1000 0000b) и из него удалить старший байт, то строка будет выведена в файл не полностью. Все таки нуль-терминированный символ получится.
Для работы с байтовыми массивами лучше всегда использовать функции неформатного ввода/вывода (read/write).
Я все таки считаю, что это именно
байтовый массив, а не строка. Битовые махинации для
строк не должны использоваться в силу идеологии

Вы абсолютно правы. Суть как раз не в том, что там строка, а в том, что именно байтовый массив. Предмет по которому пишу лабораторную:
Теория информации и Кодирования. Это 0-я лабораторная, как я понимаю для обучения работы с битами. Дальше идут лабораторные с кодирование/декодированием и шифрование/дешифрование.
Александр, вот пояснение к задаче..
Суть в том, что когда идут байты:
10001101
|01100110
|01011001
Биты выделенные красным надо удалить. Не занулить, а именно удалить, т.е. произойдёт сдвиг всех битов влево. В полученном результате синим цветом отметил те биты, которые были перенесены из одного байта в другой. Ну, а фиолетовым выделил те нули, которые надо дописать в конец байта последнего. Если в результате таких вот удалений мы получим просто пустой байт: 00000000, то его и выводить не надо.
0001101
1|100110
10|11001
000
Теперь по-моему полностью изложил суть проблемы..
Добавлено через 1 час 6 минут
Делая сдвиг влево, я могу добиться лишь того, что в каждом байте я затру старший бит, остальные биты сдвину, а в нулевой бит запишу "0".
До:
10010101|
11101101|
11110000
После:
0010101
0|1101101
0|1110000
0
Но дальше не получается сделать необходимое.. Чтобы в биты не "0" писать, а сдвигать биты из следующих байтов..
Добавлено через 1 час 28 минут
Ни у кого нету идей как это реализовать? Сам бы алгоритм понять..