7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
|
||||||||||||||||
1 | ||||||||||||||||
Считывание из файла15.01.2020, 14:14. Показов 3102. Ответов 16
Метки нет (Все метки)
Доброго!
Есть какие-то способы считывать 2 байта из файла в бинарном режиме и помещать их в одну переменную? К примеру: в char16_t или в int_16t. А 4 байта считывать и в int или uint? Что происходит, если у меня файл на 3 байта, а я буду считывать int на 4 байта, как там избавляться от мусора из последнего байта? Пытаюсь считать int, в файле одно число: 1
Кликните здесь для просмотра всего текста
-858993615
Когда пытаюсь char16_t, файл тот же.
Кликните здесь для просмотра всего текста
52273
Придумал что-то такое:
Кликните здесь для просмотра всего текста
1╠
По сути все правильно, 1 и мусор. Вот только это лежит в массиве. 2 элемента по 8 бит. А хочется в одном элементе на 16. (да хоть на 32 в будущем)
0
|
15.01.2020, 14:14 | |
Ответы с готовыми решениями:
16
Заменить считывание с клавиатуры на считывание из файла Считывание файла в массив и запись нового файла Считывание из файла Считывание из файла |
374 / 317 / 65
Регистрация: 14.10.2014
Сообщений: 1,348
|
|
15.01.2020, 16:48 | 2 |
Battary, возможно то, что вам нужно вы найдёте здесь
Использование #pragma pack(push,1)... pack(pop)
0
|
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
|
|
15.01.2020, 17:18 | 3 |
Позвольте полюбопытствовать, почему в файле оказалось 3 байта, если должно быть 4?
0
|
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
|
|
15.01.2020, 17:49 [ТС] | 4 |
Ну вот так вот исторически сложилось, в файле оказалось нечетное количество байт.
0
|
Фрилансер
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
|
||||||
15.01.2020, 18:15 | 5 | |||||
Ну обнулите старший байт руками
Что-то Вы мудрите.. 52273 = 0xcc31 У Вас в файле единица в символьном виде?
0
|
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
|
|
15.01.2020, 18:23 [ТС] | 6 |
0
|
Любитель чаепитий
|
||||||
15.01.2020, 18:27 | 7 | |||||
1
|
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
|
|
15.01.2020, 21:27 [ТС] | 8 |
Делаю копирование файла, но не побайтово(такое условие), если, сначала у меня был файл на 51 байт, а потом станет на 52 или 54, файл будет корректно работать или побьется?
0
|
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
|
|
15.01.2020, 21:37 | 9 |
Это условие можно трактовать как в текстовом режиме(!!!), тогда вообще поехать сколько там байт
Добавлено через 2 минуты Нуль это тоже данные, если есть нуль - он запишется, даже если его не было, что бы этого не было копировать надо кратными размеру файла порциями, или как я написал выше... Добавлено через 1 минуту Кста! Никто не мешает скопировать ВЕСЬ файл разом!
0
|
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
|
|
15.01.2020, 21:47 [ТС] | 10 |
Мешает. Условие: копирование файла в бинарном режиме, файл не должен копироваться побайтово(т.е. нельзя считать в char/другую переменную 1 байт и передать эту переменную на запись). То есть порции минимум по 16 бит. Файл может быть абсолютно любым, (txt/exe/bat/да хоть torrent).
0
|
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
|
|
15.01.2020, 23:30 | 11 |
Не по теме: Зуд в районе клоаки тебе мешает ВЕСЬ СРАЗУ В ОДНУ ПЕРЕМЕННУЮ РАЗМЕРОМ С ФАЙЛ - пойдет такая порция?
0
|
Любитель чаепитий
|
||||||
16.01.2020, 05:25 | 12 | |||||
тогда вам нужно проверить, сколько символов было извлечено на данной итерации, если вы достигли конца файла.
делается это просто:
это приводит к тому, что поток выставляет eofbit , который я проверяю в условии.после чего вызываю gcount , чтобы узнать, сколько байт было записано до того, как был выставлен eofbit .после этого я могу записать ровно столько байт, сколько считал и тогда файл не станет 52 или 54 байта.
1
|
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
|
||||||
16.01.2020, 11:05 [ТС] | 13 | |||||
Провел эксперимент на txt/jpg/mp3/exe файлах.
Все были нечетного количества байт. Считывал и записывал по 16 бит в бинарном режиме. Было -> Стало txt 27 26 jpg 710697 7106976 mp3 493553 493552 exe 4126497 4126496 При это все открывается и все работает, в txt явно потерялся последний байт, пропал символ, а в других файлах все хорошо. Выходит потеря последнего байта не так страшна? Добавлено через 11 минут
Но, увы не работает. Как заставить программу прочитать последний байт и мусор потом?
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
16.01.2020, 11:45 | 14 | |||||
Battary,
0
|
43 / 39 / 5
Регистрация: 16.09.2019
Сообщений: 285
|
|
16.01.2020, 12:22 | 15 |
На уровне фарта, лишь.... может оказаться принципиальной...
Так а в чем проблема переноса без потерь?
0
|
7 / 6 / 1
Регистрация: 29.10.2016
Сообщений: 175
|
|
16.01.2020, 12:44 [ТС] | 16 |
Статистика, чтобы корректно велась, ещё дополнительно можно просмотреть какие комбинации char16_t встречались чаще всего. Естественно 8 бит тут никаким боком.
В идеале хотелось бы получить что-то для файлов, размер которых не кратен размеру контейнера. Допустим у нас файл 5 байт, мы переносим его блоками по 2 байта, последний блок: [последний байт][eof] Или переносим блоками по 4 байта, тогда последний блок: [последний байт][eof][eof][eof]. Т.е. просто добивать eof-ми, все-равно вся информация после eof игнорируется.
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
16.01.2020, 13:10 | 17 |
Символ EOF (байт со значением 0x04) в бинарном файле может быть где угодно.
Тот eof, который вам возвращает поток - это состояние потока, а не конкретный символ из файла.
0
|
16.01.2020, 13:10 | |
16.01.2020, 13:10 | |
Помогаю со студенческими работами здесь
17
Считывание с файла Считывание из файла Считывание из файла Считывание из файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|