|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.03.2021, 18:58 | #51 |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
sergey.serg-72,
Приступаю к википедии по HEX, а то совсем за эти дни от главного отошёл, теперь неделя передышки есть. Сейчас почитаю и тогда наверное вопросы будут. |
13.03.2021, 01:03 | #52 |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
sergey.serg-72,
Прочитал про hex как я понял из прочитанного , строка в hex делится на сектора, если так можно сказать. : так начинается строка, далее 10, количество байт (полезных) в строке, далее, Адрес, с которого начинают размещаться данные этой записи, далее ,Тип записи , если обычная строка то 00, если 02,03,04,05 это адрес сегмента, как я понимаю,это смещение ? . Если скажем адрес записи начинается с 4000, то выше будет заполнение пустотой 00, или FF. Файл с данными будет начинаться с 4000 адреса, а выше смещение с данными FF. Далее экспериментальным путём удалось выяснить подсчёт контрольной суммы строки. Нужно последовательно сложить все байты, так, чтобы результат каждого сложения занимал так же один байт, при этом переполнение не учитывается и просто отбрасывается, — это будет операция сложения по модулю 256. Далее нужно от 256 отнять полученный байт (или можно по другому — сделать инверсию полученного байта и увеличить результат инверсии на 1) — это будет вычисление дополнения по модулю 256 до нуля. Ещё особенность выяснилась, если сложить все байты в строке и к ним , прибавить байт контрольной суммы, то получится 0. 01A1 +4F=1F0 отбрасываем 1F и получаем 0. Оригинально однако. Проще говоря ,Имеем строку из hex файла. :100000001F401F4013880C1C0702030600 0707004F Произведем расчет контрольной суммы следующим образом. Суммируем все символы строки по байтно (4 байта служебных и 16 байт данных). 10 +00+ 1F+40+1F+40+13+88+0C+1C+07+02+03+06 +00+07+07+00=01B1 Далее от $FFFF -01B1 = FE4E+1 =FE4F далее отбросив старшие байты, получаем сумму контрольной строки 4F. Это значит что в подсчёте контрольной суммы участвуют байты (количество данных) и байты адреса. Значит подсчёт контрольной суммы должен происходить в процессе формирования данных строки. Обрабатывается файл, раскладывается, сколько будет данных в строке, какой адрес, полная ли строка, или нет.Всё это должно учитываться. Не думал что так муторно будет всё.... Теперь понятно, что не каждый кодер, берётся.... И не каждый сможет наверное. Тут мой оптимистичный пыл упал ниже плинтуса.... Вопрос, уточнение по SS - тип записи (00 - данные, 01 - конец файла) с этим понятно, а вот про 02,03,04 и 05 как я понял это о смещении данных идёт речь, или что то не допонял? |
13.03.2021, 06:20 | #53 | |||||
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|||||
13.03.2021, 19:18 | #54 | ||||
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Цитата:
Цитата:
Цитата:
Пока сталкивались с FLESH в 98304 байта, больше не было и там как раз запись начиналась с адреса 2500 и в верху дампа FF. Вот видимо об этом и речь что смещение надо. С гигабайтами пока дело не имели. Цитата:
Я голову ломал весь день, как построить программу, весь мозг сломал.... Вижу так : 1) считываем в массив данные бинарного файла , далее записываем и адрес и данные, но не в файл, а в какой нибудь буфер , далее из буфера за ново , уже из полного файла , формируем строку в 16 байт (если полная строка) пересчитываем контрольную сумму строки, уже с адресом и проставляем контрольную сумму в конец строки, при пересчёте добавляем в данные количество байт в строке, если полная то 10, если не полная то 09, 08, 04 и.т.д И только потом записываем в файл и сохраняем. Получается бред какой то..... Значит делать надо сразу всё при загрузке бинарника, загрузил пересчитал количество строк, как то пересчитал адрес, далее байты в строке, контрольную сумму и так записал в файл, это как то в потоке надо делать и думаю что одним циклом не обойтись ... А скорей всего , ещё и буфер какой то дополнительный нужен.... В общем мозг ломаю, а чёткой логики сформировать не получается ... Последний раз редактировалось BDA; 14.03.2021 в 06:32. |
||||
13.03.2021, 20:11 | #55 |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
sergey.serg-72,
BDA, Ой совсем забыл спросить , ребята напомнили сегодня. Проблема заключается в следующим : Когда обрабатываем файл из бинарного в ТХТ, как мы делали , или из bin в hex,s19 не важно. При сохранении файла в txt формат , с начало идёт старое расширение bin, а потом идёт уже новое расширение txt. Как то не правильно, если уж мы поменяли расширение, то старое не должно присутствовать в новом файле. Действительно в редакторе попробовал: взял файл bin, сохранил в hex и в выходном файле только расширение hex, а старое расширение не приписано в файле. А у нас, как то получается не красиво на выходе, сканвертировали в новый формат, а старый присутствует в новом, выходном файле. Как этот момент решается ? чтоб на выходе, только новое расширение, без добавления старого. В папке два файла, один в редакторе, второй моей прогой имитация , в редакторском нет старого расширения, а в моём есть. Как бы этот момент решить. Код при сохранении файла : Код:
|
13.03.2021, 23:46 | #56 | |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Цитата:
Всё просто оказалось : Код:
|
|
14.03.2021, 06:30 | #57 | ||
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
На будущее, если ответов в теме не появилось, то просто дописывайте сообщение с помощью кнопки "Правка" (и другие полезные советы тут - Правила).
Цитата:
Цитата:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
||
14.03.2021, 22:03 | #58 | ||
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Цитата:
Цитата:
Конвертация должна быть строгой, без вмешательства пользователя, что бы избежать ошибки. Имя захочет сменить, сменит после сохранения, переименовав файл, как ему нравится, если напартачит с расширением, то это уже его вина, а не разработчика. С этим всё понятно, но там не учитывается количество байт в строке, тип записи.... Последний раз редактировалось BDA; 15.03.2021 в 00:13. |
||
14.03.2021, 22:38 | #59 | |
Форумчанин
Регистрация: 12.03.2019
Сообщений: 376
|
Цитата:
У меня нет ни каких сомнений в том, что это можно сделать Вам например, или опытному программисту , у меня сомнения в себе, для меня это с ровни полёта в космос в домашних условиях.... Наш батан группы (любимец нашего препода, Джонса), два часа назад отправлен, в глубокий нокаут , заметьте не нокдаун даже , а именно в глубокий нокаут на одном ресурсе программистов... Он хотел решить эту задачу и помочь остальным сокурсникам . Помог.... Он шкодит (пардон ! кодит) с 13 лет, пришёл не лузером уже, Джонс ,его в пример всем ставит и любит его, он его любимчик !. Офигел бы увидев как его любимчика разделали в пух и прах, унизили при этом и назвали тупым...... Но объяснить ни чего так и не объяснили.... Я по сравнению с ним , что гусеница, против Аиста... Он Тайсон , можно сказать в программировании , а я школьник. Его отправили в нокаут , а Вы предлогаете мне решить эту задачу. Я бы посмеялся, бы тоже над этим. Джонс в шок ушёл бы на первой секунде!!! Любимчик не решил, а лузер решил. Ребята создали (точней пытались создать эту тему, на разных ресурсах, темы почему то закрывали, под разными предлогами. Видимо это простая задача, с которой справится и начинающий и не стоит подробного описания и решения. Хотя запросы говорят об обратном, нет таких тем ни на одном ресурсе. Я не знаю как это объяснить?. Я сегодня весь день читал про hex и Дельфи для начинающих (лучше бы этого не делал) , мозг закипел, в голове каша, что уяснил и запомнил всё стёр.... Вчера идеи были как цикл построить и как попробовать . После книг мозг взорвался напрочь......Забыл таблицу умножения, чего не было со мной . А после нашего Ботана, его нокаута, я совсем ниже плинтуса стёк... У него знания как мне казалось отменные, а уделали его в первом вопросе..... Наверное самый близкий из всех ранее кодов, к hex, ближе всего этот от ниго и плясать наверное лучше? контролку чуток скорректировал. Но думаю с этим кодом надо работать? Код:
Последний раз редактировалось sergey.serg-72; 15.03.2021 в 00:20. |
|
15.03.2021, 00:12 | #60 | |||
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,322
|
Цитата:
Цитата:
Цитата:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
|||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно создать "батник", вырезать из "2.txt" первых n строк и вставить их в "1.txt" | temphard | Помощь студентам | 2 | 03.09.2013 16:03 |
Удаление первых n-строк из txt-файла | Neksion | Помощь студентам | 2 | 10.07.2013 18:12 |
Создать чтение из файла и запись в файл txt на С++ | skifre | Фриланс | 0 | 01.06.2012 16:16 |
поиск и выципление строк из txt файла | D_e_n_n | Помощь студентам | 7 | 04.02.2011 05:39 |
C# Представление txt файла как массива строк | asheb | Помощь студентам | 7 | 20.04.2010 12:51 |