Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
moUseBit
1 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 6
1

Создание/Открытие/Редактирование файла побайтно

02.04.2015, 14:39. Просмотров 648. Ответов 1
Метки нет (Все метки)

Суть такова:
Есть *.dat файлы, файлы структурные и их можно открыть уже существующей программой (Structorian), которая использует файлы *.strs (просто текстовики с необходимыми данными о структуре файла).
Информация в файлах обычно представляет собой либо целые числа, либо числа с плавающей запятой, либо являются текстовыми строками. Именно поля этих типов и являются основой структур.
Код
• u8, u16, u32 (unsigned) - целое положительное (без знака) число размерностью 1, 2 или 4 байта
• i8, i16, i32 (integer) - целое положительное/отрицательное (со знаком) число размерностью 1, 2 или 4 байта
• x8, x16, x32 (hex) - целое положительное/отрицательное (со знаком) число размерностью 1, 2 или 4 байта
• float, double - число с плавающей запятой размерностью 4 или 8 байт
• str, cstr, wstr - обычная строка, строка с завершающим нулем и строка с юникод-символами
• char, wchar - обычный и юникод символы
Выглядят структуры следующим образом:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
filemask="GauntletItem.dat;HelmetItem.dat;LowerItem.dat;ShieldItem.dat;ShoeItem.dat;UpperItem.dat"]
 
struct DfnEquipItemFile
{
    u32 nBlocks;
    u32 nBlockColumns;
    u32 nBlockSize;
    child DfnEquipItem [count=nBlocks];
}
 
struct DfnEquipItem [preload, tableview]
{
    u32 [tag="m_dwIndex"];
    cstr [len=64] m_strCode;
    i32 [tag="m_bExist"];
    cstr [len=64] m_strModel;
    i32 [tag="m_nIconIDX"];
    cstr [len=64] m_strName;
    i32 [tag="m_nKindClt"];
    i32 [tag="m_nItemGrade"];
    i32 [tag="m_nFixPart"];
    . . . 
    
    . . .
    i32 [tag="m_bIsTime"];
    nodename (": "+m_strCode);
}
Файлы структурированы так:
первые 4 байта (u32 nBlocks) - количество блоков в файле.
вторые 4 байта (u32 nBlocksColumns) - количество колонок в блоке.
третьи 4 байта (u32 nBlocksSize) - длина блоков в байтах.
Выглядит это так:
Название: 1.jpg
Просмотров: 26

Размер: 8.2 Кб
Далее идут уже сами блоки подряд. В Structorian это представляется в виде таблицы, блоки выстраиваются в строки первый над вторым и так далее:
Создание/Открытие/Редактирование файла побайтно


К чему, собственно, я веду?
Structorian даёт достаточно возможностей и хорошо работает, но в силу специфичности и количества редактируемых файлов, нужно что-то, что облегчит страдания в плане автоматизации некоторых действий, например:
1. Добавление блока: Чтобы добавить в файл блок, нужно в HEX-редакторе добавить количество байт, равное размеру блока и изменить значение количества блоков(или зайти в Structorian, изменить значение, сохранить файл и перезагрузить файл с уже новым значением количества блоков) .
2. Редактирование сразу нескольких колонок (в Structorian просто нет такой функции).
И так далее и тому подобное.

Поэтому прошу "пинка" в нужную сторону. Что мне использовать для чтения файлов так, как делает это Structorian? Ясно одно: для каждого отдельно взятого типа данных, которые могут встретиться в файле, нужно писать свою функцию, но какие операторы мне использовать? Я слаб и глуп и, возможно, когда сюда зайду в следующий раз, уже найду решение, но не факт, что оно будет правильным с точки зрения оптимизации, поэтому прошу помощи в указании направления "куда копать?".

Всем спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2015, 14:39
Ответы с готовыми решениями:

Открытие и редактирование файла, находящегося на хостинге
Добрый день! Необходимо, чтобы приложение работало с базой данных в сети,...

Открытие каталога и создание там файла
Добрый день, собственно вопрос, как открыть определенную директорию, или может...

Excel 2010: открытие, редактирование и сохранение книги
Вообщем всех с 2012 годом=)) Мня интересует как можно связать эксель и си...

Word создание и редактирование
Как создать Word документ, затем скопировать туда текст с .txt документа и...

Создание и редактирование PDF в c#
Здравствуйте , хотелось бы узнать каким образом это возможно , сторонние...

1
gazlan
3141 / 1917 / 311
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
02.04.2015, 14:58 2
Цитата Сообщение от moUseBit Посмотреть сообщение
прошу "пинка" в нужную сторону
Просмотр структур и скриптинг есть во многих редакторах. Наиболее развитый - у SweetScape 010 Editor.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2015, 14:58

Чтение строки побайтно
Здравствуйте уважаемые форумчане, не могу разобраться как считать последнюю...

Запись/Чтение Побайтно
Собственно хотелось бы узнать один символ сколько может занимать байт и как...

Создание, редактирование и утверждение/отклонение данных о пользователях
Нужно написать программу, которая с базы данных считывает информацию о...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru