Вторник, 24.06.2025, 14:44
СГУ.clan - в помощь студентам!
Главная | Регистрация |Вход Приветствую Вас Школьник | RSS
Меню сайта
ПОИСК ДЛЯ ПРОГРАММИСТОВ
 Google поиск для программистов
Категории каталога
Статьи [22]
Не СГУ [9]
Факультет КНиИТ [340]
Биологический факультет [16]
Географический факультет [31]
Геологический факультет [36]
Институт истории [67]
Механико-математический факультет [190]
Социологический факультет [68]
Фак-т нано и биомедицинских техн... [99]
Факультет нелинейных процессов [36]
Физический факультет [66]
Институт филологии и журналистики [29]
Химический факультет [70]
Экономический факультет [55]
Юридический факультет [31]
Наш опрос
Ваш факультет?
Всего ответов: 536

Напоминаем, что если необходимый Вам файл был удален с сервера DepositFiles (за исключением просьбы автора), то Вы можете написать в комментарии о необходимости в данном файле. В ближайшее время он будет перезалит (при возможности на сервер сайта).

Главная » Файлы » Статьи [ Добавить материал ]

Читаем файл как поток бит (C#)
[ ] 12.02.2010, 22:00
Рассмотрим задачи: Необходимо считать файл как последовательность бит. Необходимо создать файл имея последовательность бит.
Воспользуемся языком программирования С#.

Пример:

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();
  }

Категория: Статьи |
Просмотров: 1098 | Загрузок: 0 | Рейтинг: 5.0/4 |

Данный файл Вам очень помог? Вы можете отблагодарить автора!

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Правильные покупки

Поиск
Друзья сайта


Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright СГУ.clan © 2025