![]() |
Определить и записать смещение каждой строки
Требуется написать программу на C# (но буду благодарен и за теорию).
Производится чтение из текстового файла (кодировка ANSI). Нужно определить смещение первого символа каждой строки, вписать все смещения этих символов в файл (то есть получается бинарный файл). вопрос состоит в том каким образом можно считать эти смещения и записать их в виде: 00000000 00000001 (без пробелов :), то есть при открытии этого файла видим в hex-редакторе видим "ссылки" на определённое смещение) |
S.T.R.E.L.O.K., Есть нюанс, как закодировано окончание строки - в разных ОС разные соглашения о формате текстовых файлов. Для windows надо искать последовательность двух символов с кодами 0D и 0A - следующий символ - будет первым символом новой строки.
Так же существует спецсимвол обозначающий конец текстового файла, правда в реальной жизни практически не встречается, но формально, встретив его, нужно завершить чтение текстового файла и конечно же не считать символом новой строки, даже если он идёт за 0x0D0A. Есть ли ограничение на размер входящего файла? - мне попадались логи объёмом по 3Гб. Если смещение представлять традиционным int (что в корне неверно, т.к. он знаковый), то корректно обработаются только файлы объёмом до двух гигабайт; если беззнаковым int - до 4 Гб. |
Цитата:
Цитата:
Цитата:
|
S.T.R.E.L.O.K., не понимаю суть затруднений: вы не знаете как читать из двоичного файла, или что такое смещение?
|
Busla, не знаю как определить смещение :). да и работать с ними в C# не особо
|
А что его определять-то: чтобы анализировать символы, нам нужно читать данные побайтно: байт прочитал, увеличил счётчик - этот счётчик и есть смещение.
|
Время: 03:31. |
Время: 03:31.
© OSzone.net 2001-