Рассмотрим задачи: Необходимо считать файл как последовательность бит. Необходимо создать файл имея последовательность бит. Воспользуемся языком программирования С#. Пример: Code const int size = 8; //Число бит в байте
//byte[] dist_message - массив байтов данного файла //char[][] dist_filebits - массив битов данного файла
private int BinaryRead(string filename, ref byte[] dist_message, ref char[][] dist_filebits) //Читаем файл { FileStream fs = File.OpenRead(filename); //Открываем файл для чтения int len = (int)fs.Length; //Файл представляется в виде массива байт, определим размерность этого массива dist_message = new byte[len]; fs.Read(dist_message, 0, len); //Считали файл в виде массива байт fs.Close(); dist_filebits = new char[len][]; //Создадим массив в котором будем хранить биты файла Console.WriteLine("\nИсходный файл:"); for (int i = 0; i < len; i++) { string bits = Convert.ToString(dist_message[i], 2); //Преобразуем число явл-ся значением байта в биты, т.е. тапример число 255 = 11111111 while (bits.Length != size) bits = '0' + bits; //Учтем случай если длина полученной битовой последовательности меньше 8 dist_filebits[i] = new char[size]; bits.CopyTo(0, dist_filebits[i], 0, size); f.PrintCharArr(dist_filebits[i]); //Самописная функция вывода на экран массива чаров } return len; }
//string whatsave - последовательность бит в виде строки, которые нужно записать
private void SaveFile(string filename, string whatsave) //Пишем файл { FileStream file = File.OpenWrite(filename); //Создаем файл для записи byte[] byteresult; int flen = 0, len = 0; if ((whatsave.Length % 8) == 0) //Выравниваем длину массива len = whatsave.Length / size; else len = (whatsave.Length / size) + 1; byteresult = new byte[len]; for (int i = 0; i < len; i++) { if ((i * size) + size < whatsave.Length) flen = size; else { while ((whatsave.Length % 8) != 0) whatsave += '0'; //Допишем нули, если число битов не кратно 8 flen = size; } byteresult[i] = Convert.ToByte(whatsave.Substring(i * size, flen), 2); } file.Write(byteresult, 0, len); file.Close(); }
|