.NET - [решено] Определить и записать смещение каждой строки

Ответить
Аватара пользователя
S.T.R.E.L.O.K.

.NET - [решено] Определить и записать смещение каждой строки

Сообщение S.T.R.E.L.O.K. »

Требуется написать программу на C# (но буду благодарен и за теорию).

Производится чтение из текстового файла (кодировка ANSI).

Нужно определить смещение первого символа каждой строки, вписать все смещения этих символов в файл (то есть получается бинарный файл).



вопрос состоит в том каким образом можно считать эти смещения и записать их в виде:

00000000 00000001 (без пробелов Изображение, то есть при открытии этого файла видим в hex-редакторе видим "ссылки" на определённое смещение)
Аватара пользователя
Busla

Re: .NET - [решено] Определить и записать смещение каждой строки

Сообщение Busla »

S.T.R.E.L.O.K., Есть нюанс, как закодировано окончание строки - в разных ОС разные соглашения о формате текстовых файлов. Для windows надо искать последовательность двух символов с кодами 0D и 0A - следующий символ - будет первым символом новой строки.

Так же существует спецсимвол обозначающий конец текстового файла, правда в реальной жизни практически не встречается, но формально, встретив его, нужно завершить чтение текстового файла и конечно же не считать символом новой строки, даже если он идёт за 0x0D0A.

Есть ли ограничение на размер входящего файла? - мне попадались логи объёмом по 3Гб. Если смещение представлять традиционным int (что в корне неверно, т.к. он знаковый), то корректно обработаются только файлы объёмом до двух гигабайт; если беззнаковым int - до 4 Гб.
Аватара пользователя
S.T.R.E.L.O.K.

Re: .NET - [решено] Определить и записать смещение каждой строки

Сообщение S.T.R.E.L.O.K. »

Цитата Busla:



Для windows надо искать последовательность двух символов с кодами 0D и 0A
.NET - [решено] Определить и записать смещение каждой строки




да, последовательность именно такая. тогда изменю немного вопрос, как найти смещение символа с кодом 0D и минус ещё один символ из самого смещения (в последующей обработке символы перехода на новую строку будут удаляться), если не ошибаюсь.


Цитата Busla:



Так же существует спецсимвол обозначающий конец текстового файла, правда в реальной жизни практически не встречается, но формально, встретив его, нужно завершить чтение текстового файла и конечно же не считать символом новой строки, даже если он идёт за 0x0D0A.
.NET - [решено] Определить и записать смещение каждой строки




в моём случае, данного символа нет.


Цитата Busla:



Есть ли ограничение на размер входящего файла? - мне попадались логи объёмом по 3Гб. Если смещение представлять традиционным int (что в корне неверно, т.к. он знаковый), то корректно обработаются только файлы объёмом до двух гигабайт; если беззнаковым int - до 4 Гб
.NET - [решено] Определить и записать смещение каждой строки




для моего случая так же не существенно. файлы, которые придётся обработать не больше 2 мб, но их более 100.
Аватара пользователя
Busla

Re: .NET - [решено] Определить и записать смещение каждой строки

Сообщение Busla »

S.T.R.E.L.O.K., не понимаю суть затруднений: вы не знаете как читать из двоичного файла, или что такое смещение?
Аватара пользователя
S.T.R.E.L.O.K.

Re: .NET - [решено] Определить и записать смещение каждой строки

Сообщение S.T.R.E.L.O.K. »

Busla, не знаю как определить смещение Изображение. да и работать с ними в C# не особо
Аватара пользователя
Busla

Re: .NET - [решено] Определить и записать смещение каждой строки

Сообщение Busla »

А что его определять-то: чтобы анализировать символы, нам нужно читать данные побайтно: байт прочитал, увеличил счётчик - этот счётчик и есть смещение.
Ответить

Вернуться в «Программирование и базы данных»