Здравствуйте вот пишу небольшую программу для чтения плохих файлов и у меня чтение побайтово. . Плохие байты зануляются. .
Интересует вопрос можно ли считывать по 1 биту а не 1 байту дабы повысить качество считывания информации?
Язык программирования впринципе не столь важен...
Другие языки программирования и технологии
Как считать 1 бит информации?
У тебя "сферический файл в вакууме"?
Ты про саму файловую систему почитай - про кластеры диска. То что ты будешь побайтово читать, тебе даст прочитать ОС, а вот как именно она даст прочитать - другой вопрос. Кроме того, вот у тебя есть файл на 300 байт, но кластер 512 байт (допустим, т. к. по умолчанию значение скорее всего будет другим) . Итого на диске, файловая система займёт все 512.
Твоя задача, как я понял, состоит в том, чтобы прочитать эти 300 из 512, причём на низком уровне. Кроме того, для попытки восстановлния, прочитать "сомнительный" участок несколько раз.
Тут простым ReadByte не обойдешься, читай WinAPI
Ты про саму файловую систему почитай - про кластеры диска. То что ты будешь побайтово читать, тебе даст прочитать ОС, а вот как именно она даст прочитать - другой вопрос. Кроме того, вот у тебя есть файл на 300 байт, но кластер 512 байт (допустим, т. к. по умолчанию значение скорее всего будет другим) . Итого на диске, файловая система займёт все 512.
Твоя задача, как я понял, состоит в том, чтобы прочитать эти 300 из 512, причём на низком уровне. Кроме того, для попытки восстановлния, прочитать "сомнительный" участок несколько раз.
Тут простым ReadByte не обойдешься, читай WinAPI
Это невозможно. Минимальный размер данных - 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;
Вот пример функции след. бита на 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;
А смысл? читай по байту и выделяй с него биты.
могу предложить использовать маску и применять логическое умножение
т. е есть какойто байт
10011101
и есть маски на каждый бит
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
применяя логическое умножение ты узнаешь что находится в каждом бите байта
т. е есть какойто байт
10011101
и есть маски на каждый бит
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000
применяя логическое умножение ты узнаешь что находится в каждом бите байта
Согласен
1. Минимальная единица информации - байт, все функции отдают байт, его на биты и бить, только смысла нет
2. Для проверки на правильность есть понятие - CRC, контрольная сумма. У каждого девайса на разную длину байт. Отсюда и нужно плясать
1. Минимальная единица информации - байт, все функции отдают байт, его на биты и бить, только смысла нет
2. Для проверки на правильность есть понятие - CRC, контрольная сумма. У каждого девайса на разную длину байт. Отсюда и нужно плясать
Похожие вопросы
- сколько бит информации несет каждое двухзначное число
- Какое количество бит информации содержится в 1 Гб?
- Помогите расположить в порядке убывания. 1024 бита, 1000 байтов, 1 бит, 1 байт, 1 Кбайт
- зачем на тип данных bool (и эквивалентные ему в разные языках) выделяется целых 8 бит, если достаточно 1 бита?
- "в гардеробе висит 5 платьев" сколько это бит информации?
- Возможно ли сделать так, что например 1 гиг информации (например фильм) , превратить в 1 символ информации ?
- В 1 байте 8 бит....Байт - единица хранения и обработки цифровой информации.
- Сколько нужно бит, чтобы закодировать 40 битную информацию ?
- Дана величина A выражающая обьём информации в битах. Я написал программу которая переводит A в биты,Кб,Мб,Гб. проверьте.
- Заменить бит в байте. Ассемблер