|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
|
bin2cpp конвертер бинарных файлов в C++ файлы14.08.2025, 23:38. Показов 5275. Ответов 82
Метки единый exe (Все метки)
Написал конвертер бинарных файлов в C++ файлы. Это нужно для кроссплатформенного внедрения ресурсов в исполняемый файл. Из любого файла можно создать, например, заголовочный файл, внутри которого будет массив с данными. Соответственно, потом можно работать с этими данными непосредственно в памяти.
Публикую прогу для тех, кого может заинтересовать. Полагаю, что похожих программ в инете много, но возможно кому-то понравится именно моя. Тем более, те программы, которые я встречал, работали медленнее, чем моя, и не имели графического интерфейса. Например, как видно на скриншоте на гитхабе, шрифт OpenSans конвертировался за 14 миллисекунд. Одним словом, хотите пользуйтесь, не хотите - не пользуйтесь. Скачать можно здесь: https://github.com/RoyalXXX/bin2cpp. Там я выложил, в том числе, уже скомпилированные бинарники. Доступны две версии: 1. оконная версия bin2cpp GUI - работает быстрее консольной, есть проверка на валидность имен. 2. консольная версия bin2cpp console (её код открыт и любой может использовать по лицензии MIT - одна из самых свободных лицензий). Эта версия чуть попроще, поскольку имена не проверяются на корректность. И она чуть медленнее, чем версия с оконным интерфейсом - там я немного иначе реализовал. Если будете сами компилировать, то советую использовать mingw-w64-ucrt-x86_64-gcc. Программа, скомпилированная этим компилятором, работает быстрее, по крайней мере, у меня. В обеих версиях есть показ времени конвертирования и вывода прогресса конвертирования.
0
|
|
| 14.08.2025, 23:38 | |
|
Ответы с готовыми решениями:
82
Конвертер Исходных кодов Создание бинарных файлов. Чтение и запись бинарных файлов
|
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||
| 18.11.2025, 13:14 [ТС] | ||
|
Согласен, что данная идея это не панацея и не самый лучший вариант для внедрения ресурса в исполняемый файл. Ну а посоветуй другой кроссплатформенный метод? Я все анализировал - все методы говно. Есть, например, такой метод - https://github.com/graphitemaster/incbin . Но там сложно с поддержкой компиляторов. Это тоже не вишенька bin2cpp конвертер бинарных файлов в C++ файлы К тому же, если писать скатерть под каждый компилятор, то а почему не написать код с учетом разных платформ. Типа использовать платформозависимые методы внедрения ресурсов. Но это уже не то. Совершенно другой проект.
0
|
||
|
Just Do It!
|
||
| 18.11.2025, 13:21 | ||
|
я вникал уже в детали - такое понадобиться, когда у вас есть нечто серьезное, а пока его нет, то оно и нафик не нужно, а когда это серьезное наконец то появится, то и без этого тоже можно обойтись или тебе сделает такое дипсик за за 1 минуту ... поэтому эта фича есть фетишь. печка: Бизнес строят не технологии, а понимание проблем клиентов! вот отсюда начинай в следующий раз плясать.
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||||
| 18.11.2025, 13:37 [ТС] | ||||
|
XLAT, таких похожих программ много. Но все они консольные и медленные. У меня была цель сделать с удобным графическим интерфейсом и быструю. К тому же, это мой пет-проект для обучения.
![]() ты же любишь всякие мелкие бесполезные пет-проекты типа Webp2Jpeg. Да и у тебя в https://github.com/BDOTimer?tab=repositories всякие калькуляторы, тетрисы, саперы, пятнашки - сборник фетишей С другой стороны, от таких пет-проектов есть какая-то польза, ведь, как-никак учишься чему-то новому. В худшем случае, увеличивается скорость набора кода на клаве.
1
|
||||
|
Just Do It!
|
||
| 18.11.2025, 13:39 | ||
|
у меня самый удобный интерфейс - ТОЛЬКО ОДНА КНОПКА, КОТОРУЮ НУЖНО НАЖАТЬ ТОЛЬКО ОДИН РАЗ! задача у мя сразу выполняется во время клика-запуска бинарника, а у тебя только графический фейс запустит))) вот тут про твою историю(с медведями на велосипеде) с поправкой на масштаб всё написано: https://www.cyberforum.ru/blogs/499387/6558.html
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
|
| 18.11.2025, 13:43 [ТС] | |
|
0
|
|
|
Just Do It!
|
||
| 18.11.2025, 13:45 | ||
|
когда твои клиенты тебе скажут, "чувак, нам это не надо", то ты их должен будешь услышать, но ещё раньше ты их должен будешь об этом спросить. такой проект годный, как лаба по обучению кодингу, но не более.
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||
| 18.11.2025, 13:58 [ТС] | ||
|
XLAT, если говорить, что простые продукты вытесняют сложные, то тут и "Да" и "Нет".
Я вот заметил, что в Google Play особо популярны самые банальные игры, которые делаются за час, и в которые играть очень легко (т.е. на одной извилине можно). Такая же история и на itch.io. Человек может сделать игру с огромным миром, 10 лет создавать ее в одиночку, но никто не будет в нее играть, даже если она хорошая. Но вот какие-то мелкие игры особо популярны. Просто посмотри на эти игры https://itch.io/games Но не всегда простой продукт популярнее продукта с продвинутым интерфейсом. Тут нужно понять, для какого контингента делается программа. Если конечные пользователи это школоло, то можно создать графический редактор с одной кистью. Если конечные пользователи это дизайнеры, то нужно создать фотошоп с 1000 кнопками. То, что bin2cpp особо никому не нужен, это так. Я сам это вижу.
1
|
||
|
Just Do It!
|
|
| 18.11.2025, 14:07 | |
|
Royal_X,
вот тя домашнее задание: уболтай Натальюб создать тему "Какой проект на С++ мне сделать, чтобы я смог купить собственный самолет?" мне понравился ответ с юмором от квен: другой вар от топовой нс тоже интересный... я полагаю, что у Натальиб уже есть свой самолет)
0
|
|
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||
| 08.07.2026, 10:10 [ТС] | ||
|
Перешел с
constexpr uint8_t на inline constexpr uint8_tэто повышает версию с С++11 до С++17 но имеет свои преимущества, о чем написал в описании на гитхабе:
Но можно убрать inline и дальше пользоваться на С++11, особенно, если хидер будет использоваться только в одном cpp файле. Также, существуют методы с помощью extern, которые позволяют обойти этот недостаток посредством создания двух файлов, но выглядит это некрасиво. С inline современнее. К тому же, С++17 в 2026 году это норм.
0
|
||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,065
|
|||
| 11.07.2026, 23:41 | |||
|
0
|
|||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
|||
| 12.07.2026, 00:13 [ТС] | |||
|
я лично тестировал прибл. 5-6 таких похожих утилит, некоторые даже были очень популярны, но все проиграли по скорости моему приложению Однако, я больше работал над оконной версией и его код отличается от консольной - я там больше оптимизациями занимался, оконная версия должна быть быстрее. Мне, наоборот, больше нравится пользоваться графическим интерфейсом.
0
|
|||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,065
|
||||
| 12.07.2026, 01:52 | ||||
|
Я ими пользовался чтобы встроить wav / mp3 в прошивку контроллера.
0
|
||||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
|
| 12.07.2026, 08:21 [ТС] | |
|
COKPOWEHEU, как уже писал выше, есть очень много похожих консольных приложений. Даже если они проигрывают моей по скорости, все равно они популярнее, чем моё. Поэтому, люди, которым будет необходимо консольное приложение, выберут более популярное приложение, а не моё. Таким образом, я изначально знал, что моё консольное приложение не может конкурировать с теми, которые на протяжении многих лет уже сделали себе имя, получили звезды на гитхабе и пр.
По этой причине, я хоть тоже выпустил консольную версию, но решил сделать акцент на оконной версии, поскольку таких я вообще не нашел. Скорее всего, моё приложение это единственное из приложений такого рода, которое имеет графический интерфейс. Т.е. я решил завоевать нишу. Статистика на sourceforge показывает, что многим всё-таки нужна версия с GUI.
0
|
|
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,065
|
|||||||
| 12.07.2026, 12:32 | |||||||
|
Даже так было бы более логично сделать оболочку. То есть отдельно ваше же консольное приложение, и отдельно графическое, которое бы подхватывало не только ваше, но и сторонние.
По консольной версии - много внимания уделено абсолютно ненужной ерунде вроде подсчета времени или декорациям внутри файла. Вы же не будете встраивать в программу гигабайты в виде инклюдов, значит, обработка одного файла это максимум единицы минут, а типично - доли секунды. (только что проверил, файл на 3.3 ГБ конвертировался xxd за 5 минут). Ваши средства синхронизации только впустую тратят процессорное время. Собственно, если вам так критична скорость, так использовали бы отображение файлов на память (mmap) и, возможно, многопоточность. Хотя вот это вряд ли бы помогло: перекодирование одного байта в шесть происходит мгновенно, потери времени будут на работу с диском. Не по теме: Хм... даже интересно, сумею ли я написать подобную штуку более эффективно... Еще вы добавляете в финальный файл всякие шапки, инклюды и тому подобное. Проще выдавать в виде просто набора байтов, а юзер пусть сам инклюдит куда хочет и как хочет:
У вас нет никаких настроек. Ни отключить шапки, ни группировать байты в 8, 16, 32-битные слова, ни выбрать с какого по какой байт использовать. А это нужно, например, для встраивания всяких bmp или wav чтобы откусить заголовок или выбрать нужный фрагмент. Да и для обычных файлов бывает полезно. Но тут другая проблема: обработка обычных файлов идет конвейером, stdin - stdout, ваша "консольная" утилита стандартный интерфейс не поддерживает.
0
|
|||||||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
|
| 12.07.2026, 12:59 [ТС] | |
|
COKPOWEHEU, да, оконная версия Win-only. Собственно, приложение написано на wxWidgets, что позволяет очень легко выпустить для других платформ. Но полагаю на других платформах, особенно на Linux, люди будут предпочитать консольную версию. Так что, графический интерфейс понравится больше вендузятникам.
0
|
|
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,065
|
||
| 12.07.2026, 14:15 | ||
|
xxd, как некий эталон: 5:36 Простейшая версия, читающая по 1 байту и пишущая по 6: 6:33 (странно, что медленнее xxd. Вероятно, надо буферизовать ввод-вывод). mmap: 4:21 По-хорошему, надо бы еще распараллелить конвертацию, но сейчас уже не успеваю. Возможно, потом.
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||
| 12.07.2026, 14:33 [ТС] | ||
|
0
|
||
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,065
|
|||
| 12.07.2026, 19:01 | |||
|
--- А на счет дополнительных флагов все же подумайте. Задача выкусить у бинарника кусок откуда-нибудь из середины отнюдь не редкая. Если уж решили сделать задачу конвертации не пакетной, а интерактивной, то стоит добавить интерактива. Просмотр участка памяти в виде hex и в виде строки (например, как сделано в hexdump), выбор начала и конца фрагмента. Редактирование отдельных байтов. Сейчас ваша задача выглядит уж слишком простой, ее можно решить за пару часов.
0
|
|||
|
338 / 130 / 10
Регистрация: 19.07.2024
Сообщений: 708
|
|||
| 12.07.2026, 20:45 | |||
|
Добавлено через 6 минут 1. Вы делаете некую прогу, функционал которой юзер может расширять при помощи своих DLL. 2. Проге нужно проникнуть в память чужого приложения (для изменения его работы или ещё для чего-либо). 3. ...
0
|
|||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||
| 12.07.2026, 21:46 [ТС] | ||
|
0
|
||
| 12.07.2026, 21:46 | |
|
Конвертер бинарных данных Обработка текстовых файлов. Обработка бинарных файлов. Сериализация и десериализация объектов Чтение бинарных файлов Какой путь бинарных файлов Апача в Ubuntu? Обработка текстовых и бинарных файлов. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|