|
5 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 10
|
||
Преобразование бинарного файла08.07.2016, 13:03. Показов 3572. Ответов 14
Метки нет (Все метки)
Добрый день. Имеется файл, представляющий из себя сплошной текст из предложений, никак между собой не разделенных. В начале файла идет хедер, в котором для каждого предложения имеется заголовок по 8 байт, в котором есть указатели на начало нового предложения. Я хочу написать программу, которая бы могла бы из такого файла сделать полноценный текстовик, где каждое предложение начиналось бы с новой строки.
Указатели выглядят так:
0
|
||
| 08.07.2016, 13:03 | |
|
Ответы с готовыми решениями:
14
Создание бинарного дерева из бинарного файла
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 08.07.2016, 13:53 | |
|
Prizvel
1 читаете заголовок (я не знаю где он у вас кончается, может у заголовка есть в начале длина или он фиксированной длины или заголовок отделен от данных нулевым полем) 2 каждый WORD заголовка как я понял представляет собой смещение по которому лежит предложение (относительно чего это смещение я не знаю - относительно начала файла или начала данных) 3 длину предложения можно узнать предполагая что сразу за ним идет следующее предложение (правда, тогда последнее предложение потребует особой обработки) 4 перемещаемся по файлу через seekg(pos), считываем нужное количество байт, записываем их в новый файл
0
|
|
|
5 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 10
|
|
| 08.07.2016, 14:12 [ТС] | |
|
vxg
1. Смещение указано относительно начала файла. 2. Заголовок может быть разной длины, в зависимости от количества предложений, но его длину легко определить по первым двум байтам, они указывают на начало текста, все что впереди - заголовок, он ничем не отделен и всегда кратен восьми (по восемь байт на каждое предложение в тексте) 3. Последнее предложение всегда пустое и служит только для указания конца предыдущего.
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 08.07.2016, 14:40 | |
|
Prizvel полный ответ, очень логичный формат. вы ненавязчиво предлагаете написать мне код)?
0
|
|
|
5 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 10
|
|
| 08.07.2016, 14:51 [ТС] | |
|
vxg На данный момент моих знаний не достаточно для самостоятельного написания кода, поэтому конечно такой вариант мне бы очень подошел). Но спасибо и на этом, читаю матчасть и пробую через seekg(pos). Вообще я ранее правил это все ручками, вот решил попробовать автоматизировать.
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
||||||
| 08.07.2016, 15:12 | ||||||
|
Prizvel вроде так но не тестировал
1
|
||||||
|
5 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 10
|
|
| 08.07.2016, 15:21 [ТС] | |
|
vxg Огромное спасибо. Увеличил размер баффера, стало получаться, правда на выходе у меня крякозябры, но с этим я уже как нибудь разберусь. Ещё раз спасибо!
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 08.07.2016, 15:27 | |
|
Prizvel, кракозябры это кодировка. код кодировку не меняет она должна быть той же самой.
Добавлено через 35 секунд попробуйте на английском тексте или выложите тестовый файл сюда
0
|
|
|
5 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 10
|
|
| 08.07.2016, 15:33 [ТС] | |
|
да, это я тупанул сам, не тот файл подкинул. Единственное что бы еще хотелось, что бы каждое предложение начиналось с новой строки. Для этого мне нужно в конец каждого предложения добавить байт, со значением 0a.
http://puu.sh/pUyJC/0f61fd66fe.txt - файл который я открываю.
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
||||||
| 08.07.2016, 15:42 | ||||||
|
Prizvel, строка
Добавлено через 2 минуты ...что то там не так...
0
|
||||||
|
5 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 10
|
|
| 08.07.2016, 15:45 [ТС] | |
|
Почему? Все вроде так, мне осталось только с переносами разобраться.
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
||||||
| 08.07.2016, 15:50 | ||||||
Сообщение было отмечено Prizvel как решение
Решение
...во первых я не считываю хвост из 6 байтов, а во вторых что-то все куда-то съезжает
Добавлено через 55 секунд поэтому и буфера не хватает - он читает неверные позиции в результате вычитания которых получает адовое число Добавлено через 1 минуту и seekg перед чтением следующего заголовка я забыл сделать вот так похоже
1
|
||||||
|
5 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 10
|
|
| 08.07.2016, 15:52 [ТС] | |
|
Да, все супер! Теперь буду разбираться в Вашем коде, что бы иметь представление что к чему. Спасибо огромнейшее
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 08.07.2016, 15:57 | |
|
+в предложениях уже есть символы 0x0A - их не нужно добавлять
Добавлено через 49 секунд про остальные артефакты в тексте у меня пока нет идей - там какие то символы аномальные Добавлено через 53 секунды почему то в началах строк лепят 01 Добавлено через 1 минуту а иногда втыкают нулевой код
0
|
|
|
5 / 0 / 0
Регистрация: 08.07.2016
Сообщений: 10
|
|
| 08.07.2016, 16:01 [ТС] | |
|
Это нормально. Это текст из игры, которую я перевожу в свободное время. 01 там используется как перенос строки, 00 01, это означает новый диалог. Есть еще различные указатели на имена персонажей и тд. Конечно в идеале это все стоит менять на понятные глазу символы. Но да данном этапе Вы мне и так уже очень сильно помогли. В будущем, когда я буду вставлять текст обратно, я задумаюсь уже об автоматической замене этих байтов.
Пока попытаюсь на основе Вашего кода сделать обратную функцию
0
|
|
| 08.07.2016, 16:01 | |
|
Помогаю со студенческими работами здесь
15
Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется Преобразование бинарного файла в текстовый Открытие бинарного файла и преобразование данных в dec
Перегрузка бинарного плюса и преобразование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|