|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.05.2009, 18:21 | #1 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 68
|
Работа с файлами на низком уровне
Здравствуйте,
от недавнего времени заинтересовался работой с файлами. А теперь нуждаюсь в помощи. Подскажите, пожалуйста, есть ли способ копировать даже не байт, а бит данных, то есть только 1 или 0. Все что мне нужно так это побитово (в двоичном виде) разобрать файл и скопировать его. Буду очень благодарен за любую помощь. Спасибо! |
26.05.2009, 18:41 | #2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Нельзя, т.к. бит не является адресуемой единицей
|
26.05.2009, 19:02 | #3 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 68
|
Как тогда ОС копирует файлы? Меня устраивает и вариант программирования на ассемблере, и на уровне драйверов к файловой сис-ме, только чтоб добится результата. Я не верю что нельзя скопировать один бит.
|
26.05.2009, 19:12 | #4 | |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Цитата:
А что мешает сделать так же и работать с одним битом? Если вы хотите работать с диском на низком уровне, вам придется учитывать и различные ФС. Оно вам надо?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 26.05.2009 в 19:22. |
|
26.05.2009, 19:15 | #5 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
С винта Вы даже байт не прочтете. Можно конечно запросить байт и ОС даже вернёт этот байт, но на самом деле с винта прочтется N-байт, которые осядут в кэшах винта и ОС и следующие за этим байты возьмутся уже не с винта, а из этих самых кэшей. Потому быстрее будет копироваться, если сразу запрашивать эти самые N-байт. Вот только считываются данные секторами или кластерами я не помню. Меньше сектора прочитать точно не сможет ОСь, т.к. это минимально адресуемая ячейка памяти на винте, а кластер - это группа секторов, которые являются минимальным возможным размером для файла.
|
26.05.2009, 19:27 | #6 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 68
|
Тогда есть ли способ прочитать эти самые 512 байт и их потом разбить на биты уже в самой программе?
|
26.05.2009, 19:40 | #7 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Под ДОС и Win9x можно использовать функции int13 bios и int25, int26 DOS'a.
Под всеми виндами можно использовать обычные CreateFile с именем диска ('\\.\A:' для логического диска и '\\?\Device\Harddisk1\Partition0' для физического), а потом ReadFile, WriteFile. Они, вроде, принимают кол-во данных в байтах, поэтому можно передать и меньше 512 б. Это кстати не очень низкий уровень. Но я до сих пор не понимаю, зачем нужно использовать низкий уровень для этого.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 26.05.2009 в 19:49. |
26.05.2009, 19:43 | #8 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 68
|
Ладно, объясню вкратце что сделать хочу... Придумал я алгоритм ускорения передачи данных по сети с приростом скорости от 30% до 70%... Но он базируется на побитовом режиме.
Уже по ходу, хочу еще спросить можно ли по сети передать всего 2 бита? Пы.Сы. Друзья, дайте плиз свой номер аси, ато в форуме долго очень... плиз, доставать не буду. Последний раз редактировалось JamS007; 26.05.2009 в 19:47. |
26.05.2009, 19:47 | #9 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Эээ, какую сеть? Вы можете изобрести свой формат передачи данных....
В майкрософте тоже не лохи сидят... |
26.05.2009, 19:50 | #10 |
Пользователь
Регистрация: 09.11.2008
Сообщений: 68
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с файлами на С++ | nec117 | Общие вопросы C/C++ | 4 | 24.02.2009 23:18 |
Работа с файлами | basss | Помощь студентам | 2 | 22.12.2008 01:07 |
Работа с файлами | Dim@ | Помощь студентам | 1 | 26.12.2007 22:43 |
Работа на низком уровне | Prowler | Работа с сетью в Delphi | 2 | 26.12.2006 06:29 |