Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Как считать файл по битам ?   Найти похожие ветки 

 
Mischa_M ©   (2005-11-24 01:50) [0]

Здраствуйте.........
Подскажите пожалуйста каким образом можно считать файл по битам. Самое близкое к этому что у меня получается это считывание файла по байтам с помощью BlockRead(F, Buf, 1). Дальше я не знаю что делать. Помогите пожалуйста.
Зараннее благодарен.


 
Янис Прасол ©   (2005-11-24 02:03) [1]


> Подскажите пожалуйста каким образом можно считать файл по
> битам.

Никак.

> Дальше я не знаю что делать.

Разложить полученные байты на биты.


 
Германн ©   (2005-11-24 03:13) [2]

О! Второе пришествие. Совсем недавно было то же самое.

2 Mischa_M ©   (24.11.05 01:50)
Если сможешь, объясни задачу в целом. Простым языком. Т.е. по возможности без терминов "байт", "бит" etc.


 
Leonid Troyanovsky ©   (2005-11-24 09:54) [3]


> Mischa_M ©   (24.11.05 01:50)  

> Подскажите пожалуйста каким образом можно считать файл по  битам.


Сначала записать его по битам, потом считать.

--
Regards, LVT.


 
tesseract ©   (2005-11-24 10:39) [4]


> Помогите пожалуйста.

Сразу под названием конференции есть элемент ввода "поиск" и кнопка "найти". Этот вопрос обсуждался неоднакратно.


 
alex_*** ©   (2005-11-24 10:47) [5]

А ктоть отвечал зачем это нужно?


 
Amoeba ©   (2005-11-24 11:45) [6]

Если так приспичило, то можно следующим образом:

1. Отображаем файл в память

2. Теперь работаем с ним как с байтовым массивом, считывая нужный бит следующей ф-ией (взята из модуля QStrings):

function Q_BitTest(P: Pointer; Index: Integer): Boolean;
asm
       BT      [EAX],EDX
       SETC    AL
end;


 
Mischa_M ©   (2005-11-24 23:14) [7]

Как много ответов за один день.......................
Для начала, говорю зачем это нужно.
      Мне нужно смоделировать процесс кодирования цифровых данных телефонной сети общего пользования(ТфОП). Это будет криптографический алгоритм, который будет обеспечивать конфиденциальность телефонных данных. Алгоритм шифрования - DES(если о чём нибудь говорит). В нём данные обрабатываются блоком по 64 бита. Смысл обработки - это перестановка битовых позиций. Думаю дальше объяснять не нужно. Потом эта прога(скорее этот алгоритм) будет зашит в процессор.

Теперь про Пойск и кнопку Найти
       Когда я набираю фразу "файл по битам" появляется пустое окно. И всё. Может я что то не правильно делаю.

Одним словом, всем СПАСИБО ОГРОМНОЕ за ответы :)


 
Anatoly Podgoretsky ©   (2005-11-24 23:16) [8]

Mischa_M ©   (24.11.05 01:50)  
Никак и с память никак, минимальная единица байт


 
Anatoly Podgoretsky ©   (2005-11-24 23:18) [9]

Mischa_M ©   (24.11.05 23:14) [7]
Работай с байтами, а раз блок 64 бита, значит сразу по 8 байт


 
TStas ©   (2005-11-25 00:09) [10]

Хотел сначала ответить, что придумать тип вроде type Tunnessesary = set of [1..8] ну и указатели друг другу присваивать, а потом понял, что вопрос-то именно про битовое чтение:( Может, автор его некорректно поставил?


 
Mischa_M ©   (2005-11-25 00:57) [11]

Anatoly Podgoretsky вы не поняли. Мне нужен именно доступ к битам, т.к. нужно каждый из них поставить на раннее определённую мною битовую позицию.
Там что то Amoeba говорил про это. Нельзя ли поподрбнее. Я не программист. Я связист.
Зараннее спасибо.


 
Anatoly Podgoretsky ©   (2005-11-25 00:59) [12]

Если тебе нужен доступ к битам по полученым байтам, то посмотри эту статью - http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/bits.html&file_i d=app-bits


 
Германн ©   (2005-11-25 00:59) [13]

1. TBits не подойдет?
2. Set of 0..7 не подойдет?


 
Mischa_M ©   (2005-11-25 01:27) [14]

Anatoly Podgoretsky было бы хорошо если бы она открылась .та ссылка. А зайдя насайт искать буду до утра :)))


 
Германн ©   (2005-11-25 01:34) [15]

Лично я бы в данной ситуации определил бы следующие два типа:
TMyBits = (Bit0,Bit1,Bit2,...,Bit63);
TSetOfMyBits = Set of TMyBits;

Затем читал бы файл блоками по 8 байт в переменную типа TSetOfMyBits (или  уже считанный файл разбирал бы этими же блоками копируя в такую же переменную).

Хотя если вспомнить

> Потом эта прога(скорее этот алгоритм) будет зашит в процессор.


я бы разрабатывал этот алгоритм с учетом системы команд конкретного микропроцессора.


 
Германн ©   (2005-11-25 01:35) [16]


> Mischa_M ©   (25.11.05 01:27) [14]


Удали пробел между "...html&file_i" и "d=app-bits"


 
Mischa_M ©   (2005-11-25 01:41) [17]

Германн, мне препод сказал что бы я сначала ето всё промоделировал на компе на примере wav файла. То есть нужно зашифровать wav файл пока. А голосовые данные уже потом на процессоре.
Но всё равно спасибо тебе за помощь :)


 
Германн ©   (2005-11-25 01:48) [18]

Вот! Наконец-то произнесено ключевое слово "препод". Так бы сразу и говорил.


>  А голосовые данные уже потом на процессоре.


Уточни предмет препода. Если это "Микропроцессоры", то тебе придётся делать две разные работы. Одну на Паскале, вторую на МК.


 
Mischa_M ©   (2005-11-25 01:49) [19]

ЭТО МОЯ МАГИСТРСКАЯ РАБОТА :)))))))


 
Германн ©   (2005-11-25 02:02) [20]

Я же не просил кричать "Я САМЫЙ ВЕЛИКИЙ ВОЛШЕ...". Пардон, это уже было в каком-то детском "кине".


 
Mischa_M ©   (2005-11-25 02:20) [21]

Германн
>Лично я бы в данной ситуации определил бы следующие два типа:
TMyBits = (Bit0,Bit1,Bit2,...,Bit63);
TSetOfMyBits = Set of TMyBits;

ТО есть так...

while not Eof(F) do          
begin
BlockRead(F, Buf, 1);

А здесь мне как быть ?

end;


 
Mischa_M ©   (2005-11-25 02:24) [22]

Хотя в моём случае BlockRead(F, Buf, 8);


 
Германн ©   (2005-11-25 02:54) [23]


> Mischa_M ©   (25.11.05 02:20) [21]
>
> Германн
> >Лично я бы в данной ситуации определил бы следующие два
> типа:
> TMyBits = (Bit0,Bit1,Bit2,...,Bit63);
> TSetOfMyBits = Set of TMyBits;
>
> ТО есть так...
>
> while not Eof(F) do          
> begin
> BlockRead(F, Buf, 1);
>
> А здесь мне как быть ?
>
> end;
> <Цитата>
> Mischa_M ©   (25.11.05 02:24) [22]
>
> Хотя в моём случае BlockRead(F, Buf, 8);


Это зависит от того, как ты объявил переменную F (File, File of TSetOfMyBits). И от того как ты прописал RESET(F,...).


 
alex_*** ©   (2005-11-25 09:37) [24]

почитай наконец про битовые операции - сдвиги, маски, вычитывай файл кусками, кратными 8 байт и обрабатывай их


 
evvcom ©   (2005-11-25 10:02) [25]

После зашития программы в микропроцессор (микроконтроллер) ты скорее всего уже не будешь читать данные с диска ни битами, ни байтами, ни блоками. Они у тебя уже будут в памяти. Ну и читай ты блок целиком и считай, что этот блок как бы уже в памяти МП. Ты же моделируешь. И этого блочного чтения у тебя потом уже не будет. А дальнейший алгоритм действительно лучше разрабатывать с учетом типа будущего микроконтроллера. Причем написать можно и на паскале, но потом разобраться с получившимся ассемблерным кодом. Или программа для программирования микрочипов уже и паскаль понимает?
И даже микроконтроллер будет читать из своей памяти не битами, а байтами или даже группами байт (словами, двойными словами - зависит от разрядности процессора) в свои регистры, а уж потом можно анализировать определенные биты в регистрах.


 
LostDelpher   (2005-11-25 11:33) [26]

а может такой код
считываешь байт в переменную MyBite
для каждого байта

проверка есть ли на
етсь ли бит на 1 - м месте
a:=MyBite and 00000001
на втором
a:=MyBite and 00000010

и т.д. естественно если a>0 значит там есть бит - если 0 - значит нет...
тебе это нужно ?


 
byte2str   (2005-11-25 17:46) [27]

Перевод байтов в биты:

function byte2str(B:byte):string;
var i:byte;
begin
    result:="";
    for i:=0 to 7 do
    begin
    if (B and 128)=128 then result:=result+"1" else result:=result+"0";
    B:=(B SHL 1);
    end;
end;

Caption:=byte2str(4);


 
Anatoly Podgoretsky ©   (2005-11-25 18:57) [28]

Mischa_M ©   (25.11.05 02:20) [21]
По работе с файлами Паскаля, там же на моем сайте.


 
Германн ©   (2005-11-26 02:28) [29]

Автор сабжа, скорее всего, занят другими своими "хвостами", но
Прошу всех дезавуировать мой пост - Германн ©   (25.11.05 01:34) [15]. Он соответствует сабжу, но противоречит уоточнению задачи Mischa_M ©   (24.11.05 23:14) [7].

2 evvcom ©   (25.11.05 10:02) [25]
>После зашития программы в микропроцессор (микроконтроллер) ты скорее >всего уже не будешь читать данные с диска ни битами, ни байтами, ни >блоками. Они у тебя уже будут в памяти.

С учетом задачи, они всё таки будут как-то вводится в память. Конечно не битами, но, имхо, блоками.

>Или программа для программирования микрочипов уже и паскаль понимает?

"Программа для программирования" ничего, кроме двоичных данных не принимает, но компилляторы с Паскаля есть. И я уже тут постил "гневные высказывания" об одном из них. Хотя компилляторы С для 51-процессоров есть вполне приемлемые, если не учитывать оптимальность.

> И даже микроконтроллер будет читать из своей памяти не битами, а >байтами или даже группами байт (словами, двойными словами - зависит от >разрядности процессора) в свои регистры, а уж потом можно анализировать >определенные биты в регистрах.

Извини Слав, но тут ты не совсем прав. Термин "битовый процессор" существует не просто как аллегория. Он есть наяву.
Но вот с учётом данной задачи нужно работать именно с байтами. Имхо, я не знаю процессоров, которые допускают "косвенную адресацию" битов. :(

2 evvcom ©
Не прими вышеизложенное как упрёк в твой адрес. Просто ты помог мне уточнить ответ на задачу.


 
SergProger ©   (2005-11-26 02:48) [30]

Вот две функции:

function DecToBin(Dec: Byte): Integer;
begin
 Result:=(Dec div 1 mod 2)+(Dec div 2 mod 2)*10+(Dec div 4 mod 2)*100
   +(Dec div 8 mod 2)*1000+(Dec div 16 mod 2)*10000
   +(Dec div 32 mod 2)*100000+(Dec div 64 mod 2)*1000000
   +(Dec div 128 mod 2)*10000000;
end;

function Bit(Bint: Integer; n: Byte): Byte;
begin
 Result:=Bint div Round(Exp((8-n)*Ln(10))) mod 10;
end;

DecToBin переводит байт в двоичную запись, Bit извлекает из двоичной записи байт по его индексу.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.041 c
2-1132914479
psa247
2005-11-25 13:27
2005.12.11
Create Process !


4-1129145897
Вася
2005-10-12 23:38
2005.12.11
Подскажите софтину для просмотра свойств, определения Handlов...


14-1132258063
Jakudza
2005-11-17 23:07
2005.12.11
Установка Rx7


8-1120831896
4ubaka
2005-07-08 18:11
2005.12.11
перевод изобрадений из jpg в bmp


2-1132570964
Apachi
2005-11-21 14:02
2005.12.11
TWebBrowser как прочитать содержимое





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский