Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#1: 2009-01-09 21:59:29 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 22:52:04
карма: 0

0
Ответов: 590
Рейтинг: 19
#2: 2009-01-09 22:39:20 ЛС | профиль | цитата
code_11303.txt
вот в принципе и весь поиск по начальному и конечному блоку... при желании можно удалить блоки

карма: 0

0
файлы: 1code_11303.txt [608B] [212]
Ответов: 3851
Рейтинг: 159
#3: 2009-01-10 00:02:02 ЛС | профиль | цитата
EcsTasY, я не уверен, что сочетание END®B` обязательно встретится только один раз. Мне кажется нужно искать (или вычислять) размер файла в заголовочно-информационной части.

г. Сергей, на вскидку - файл PNG имеет блочную структуру (я рассматривал имеющиеся у меня), размер первого блока указан в 23Н и 24Н байтах, если блок один (файл маленький), то достаточно прибавить 57 и получишь размер файла. Если блоков больше одного (файл большой), то в указанных байтах лежит число 2000Н (8192D - видимо размер начального блока), а дальше ... я не ковырялся
карма: 0
начавший
0
Ответов: 8939
Рейтинг: 824
#4: 2009-01-10 14:53:52 ЛС | профиль | цитата
г. Сергей, конечно надо знать формат, проще искать. Но зная символы начала и окончания блоков, тоже можно искать, но дольше продлится этот поиск: читаем по байту, переводим в символы, соединяем последние (в данном случае 6 шт) и сравниваем с маской, при равенстве считываем положение последнего байта маски.
code_11312.txt
карма: 19

0
файлы: 1code_11312.txt [2.2KB] [250]
Ответов: 3851
Рейтинг: 159
#5: 2009-01-10 14:56:39 ЛС | профиль | цитата
Леонид, то есть, предполагается, что искомое сочетание не может встретиться в теле данных?
карма: 0
начавший
0
Ответов: 8939
Рейтинг: 824
#6: 2009-01-10 15:20:25 ЛС | профиль | цитата
Андрей., в теле данных может встретиться что угодно, хотя и с разной вероятностью, на то и делаются N байт в заголовок, чтобы устранить такие ошибки, но как коллега г. Сергей пояснил возникшую задачу, такое и решение
карма: 19

0
Ответов: 590
Рейтинг: 19
#7: 2009-01-10 20:00:48 ЛС | профиль | цитата
Андрей. писал(а):
я не уверен, что сочетание END®B` обязательно встретится только один раз

Я привел самый простой пример поиск одного блока... вернее ищет то он все... ток выводит самый последний... просто я вчера не мог больше ни чего придумать, тк 2ое суток не спал
карма: 0

0
Ответов: 1161
Рейтинг: 160
#8: 2009-01-10 20:19:12 ЛС | профиль | цитата
а не забывайте, что PNG - файл бинарный, и возможно что полученная картинка будет неверно отображаться, т.ч keit все делать в безопасном режиме(в HEX например)
карма: 0

0
Ответов: 1088
Рейтинг: 112
#9: 2009-01-10 20:23:28 ЛС | профиль | цитата
ВОЗМОЖНО, я не прав, но по моему вы маетесь фигней.
Ознакомтесь http://forum.megashara.com/showthread.php?p=196452
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 3851
Рейтинг: 159
#10: 2009-01-10 20:31:35 ЛС | профиль | цитата
EcsTasY писал(а):
ищет то он все... ток выводит самый последний...

несовсем так - выводит все блоки - где найдёт сочетание, там и выведет: code_11314.txt - легко проверить..
карма: 0
начавший
0
файлы: 1code_11314.txt [646B] [226]
Ответов: 590
Рейтинг: 19
#11: 2009-01-10 20:42:28 ЛС | профиль | цитата
это если в одной строке... а если в нескольких?) то тогда надо доделывать
карма: 0

0
Ответов: 3851
Рейтинг: 159
#12: 2009-01-10 20:50:53 ЛС | профиль | цитата
EcsTasY писал(а):
а если в нескольких?
не понял - можно ведь сразу весь файл, зачем (и как?) делить на несколько строк?
карма: 0
начавший
0
Ответов: 590
Рейтинг: 19
#13: 2009-01-10 21:26:53 ЛС | профиль | цитата
а ну да... торможу я...
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#14: 2009-01-11 23:50:10 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 22:52:05
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#15: 2009-01-11 23:54:26 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 22:52:05
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)