4epB9Ik
4 / 4 / 1
Регистрация: 13.06.2013
Сообщений: 20
|
||||||
#1 | ||||||
Чтение байтов из бинарного файла - C++15.06.2017, 07:47. Просмотров 304. Ответов 11
Метки нет Все метки)
(
Доброго времени суток.
Столкнулся с задачкой которую не могу правильно решить. Вообщем к сути: Есть бинарный файл в конец которого записанны 4 байта данных типа int, данное число является указателем на начало нужных мне данных (байты полученные из текста (String)) Необходимо считать этот указатель, переместиться в нужную позицию, и считать все данные с нужной позиции по (конец - 4), перевести это дело в string и уже работать с этим текстом дальше.. Нюансы: - Целиком файл читать нельзя, дабы файл может быть огромных размеров, а в моем случае важна максимально быстрая обработка данных для выполнения последующей работы Гуляя по просторам интернетов перечитал тонну гайдов и всеравно нечего не смог.. (Слишком мешают вредные привычки с других я.п (C#, Java) Подскажите что я делаю не так, и как мне правильно работать с типами данных (int, string) в среде C++ Мой код:
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
15.06.2017, 07:47 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Чтение байтов из бинарного файла (C++):
11
Удалить часть байтов из бинарного файла - C++ Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++ Чтение из бинарного файла - C++ Чтение бинарного файла - C++ Чтение бинарного файла - C++ Чтение из бинарного файла - C++ |
4epB9Ik
4 / 4 / 1
Регистрация: 13.06.2013
Сообщений: 20
|
|
15.06.2017, 08:09 [ТС] | #3 |
Читать нужно именно байты, потому что данные типа Int переведены в байты на этапе записи.
Конкретней: прочитать последних 4 байта -> перевести в Int. -> Переместиться в позицию (переведенный Int) -> прочитать байты до (конец - 4) -> перевести в String
0
|
4epB9Ik
4 / 4 / 1
Регистрация: 13.06.2013
Сообщений: 20
|
|
15.06.2017, 08:25 [ТС] | #5 |
0
|
nmcf
5988 / 5299 / 1838
Регистрация: 14.04.2014
Сообщений: 21,860
|
|||||||||||
15.06.2017, 08:30 | #6 | ||||||||||
1
|
4epB9Ik
4 / 4 / 1
Регистрация: 13.06.2013
Сообщений: 20
|
||||||
15.06.2017, 08:42 [ТС] | #8 | |||||
Повторил по твоему варианту..
В итоге Crash процесса. Сам код таков
0
|
nmcf
5988 / 5299 / 1838
Регистрация: 14.04.2014
Сообщений: 21,860
|
||||||
15.06.2017, 09:32 | #9 | |||||
4epB9Ik, Что ты получить-то хочешь? buffer - число, его нельзя выводить как строку.
0
|
4epB9Ik
4 / 4 / 1
Регистрация: 13.06.2013
Сообщений: 20
|
||||||
15.06.2017, 10:24 [ТС] | #10 | |||||
Ну вот я и пытаюсь преобразовать число в символы чтоб можно было использовать это число как текст
Вывести это число на экран так сказать. в C# все просто buffer.toString() преобразует число в строку Тут же танцы какие то с бубном.. (Да и вообще число в моем случае не обязательно выводить, это я так для удостоверения что там нужное число лежит, дабы возможности отлаживать код нет. Это число означает позицию с которой нужно читать данные из файла, вот с этими данными уже нужно работать в дальнейшем как со строкой.. нарезать и т.д) p.s чтоб понимать о чем идет речь оставлю функцию написанную на C# которая записывает все данные в этот файл
0
|
nmcf
5988 / 5299 / 1838
Регистрация: 14.04.2014
Сообщений: 21,860
|
||||||
15.06.2017, 10:44 | #11 | |||||
![]()
1
|
4epB9Ik
4 / 4 / 1
Регистрация: 13.06.2013
Сообщений: 20
|
|
15.06.2017, 11:01 [ТС] | #12 |
Отлично.. число получаемое в буфер верное, вывести на экран удалось. Половина задачи решена..
Низкий поклон тебе :3 Теперь нужно переместиться в позицию <buffer> и прочитать все до <end - 4> перевести прочитанное в string, для вывода на экран или любой другой обработки
0
|
15.06.2017, 11:01 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
15.06.2017, 11:01 |
Привет! Вот еще темы с ответами:
12
Чтение бинарного файла - C++ Чтение бинарного файла - C++ Чтение из бинарного файла - C++
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |