Другие языки программирования и технологии

Как считать 1 бит информации?

Здравствуйте вот пишу небольшую программу для чтения плохих файлов и у меня чтение побайтово. . Плохие байты зануляются. .
Интересует вопрос можно ли считывать по 1 биту а не 1 байту дабы повысить качество считывания информации?
Язык программирования впринципе не столь важен...
У тебя "сферический файл в вакууме"?

Ты про саму файловую систему почитай - про кластеры диска. То что ты будешь побайтово читать, тебе даст прочитать ОС, а вот как именно она даст прочитать - другой вопрос. Кроме того, вот у тебя есть файл на 300 байт, но кластер 512 байт (допустим, т. к. по умолчанию значение скорее всего будет другим) . Итого на диске, файловая система займёт все 512.

Твоя задача, как я понял, состоит в том, чтобы прочитать эти 300 из 512, причём на низком уровне. Кроме того, для попытки восстановлния, прочитать "сомнительный" участок несколько раз.

Тут простым ReadByte не обойдешься, читай WinAPI
Дима Вешневый
Дима Вешневый
3 611
Лучший ответ
Это невозможно. Минимальный размер данных - 1 байт.
Вот пример функции след. бита на Delphi:

//p - номер бита
//b - текущий байт
function NextBit:boolean;
begin
if p=0 then begin read(f,b);p:=8 end;
NextBit := b and 1;
b:=b div 2;
p:=p-1;
end;
*серёга *
*серёга *
7 165
А смысл? читай по байту и выделяй с него биты.
могу предложить использовать маску и применять логическое умножение
т. е есть какойто байт
10011101
и есть маски на каждый бит
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000

применяя логическое умножение ты узнаешь что находится в каждом бите байта
Согласен
1. Минимальная единица информации - байт, все функции отдают байт, его на биты и бить, только смысла нет
2. Для проверки на правильность есть понятие - CRC, контрольная сумма. У каждого девайса на разную длину байт. Отсюда и нужно плясать