Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603

bin2cpp конвертер бинарных файлов в C++ файлы

14.08.2025, 23:38. Показов 5696. Ответов 82

Студворк — интернет-сервис помощи студентам
Написал конвертер бинарных файлов в C++ файлы. Это нужно для кроссплатформенного внедрения ресурсов в исполняемый файл. Из любого файла можно создать, например, заголовочный файл, внутри которого будет массив с данными. Соответственно, потом можно работать с этими данными непосредственно в памяти.
Публикую прогу для тех, кого может заинтересовать. Полагаю, что похожих программ в инете много, но возможно кому-то понравится именно моя. Тем более, те программы, которые я встречал, работали медленнее, чем моя, и не имели графического интерфейса. Например, как видно на скриншоте на гитхабе, шрифт OpenSans конвертировался за 14 миллисекунд.
Одним словом, хотите пользуйтесь, не хотите - не пользуйтесь.

Скачать можно здесь: https://github.com/RoyalXXX/bin2cpp. Там я выложил, в том числе, уже скомпилированные бинарники.

Доступны две версии:

1. оконная версия bin2cpp GUI - работает быстрее консольной, есть проверка на валидность имен.

2. консольная версия bin2cpp console (её код открыт и любой может использовать по лицензии MIT - одна из самых свободных лицензий). Эта версия чуть попроще, поскольку имена не проверяются на корректность. И она чуть медленнее, чем версия с оконным интерфейсом - там я немного иначе реализовал. Если будете сами компилировать, то советую использовать mingw-w64-ucrt-x86_64-gcc. Программа, скомпилированная этим компилятором, работает быстрее, по крайней мере, у меня.

В обеих версиях есть показ времени конвертирования и вывода прогресса конвертирования.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.08.2025, 23:38
Ответы с готовыми решениями:

Конвертер Исходных кодов
Здравствуйте! Появилась отличная идея! Вообщем, создать программу в которую пользователь загружает...

Создание бинарных файлов. Чтение и запись бинарных файлов
Здраствуйте. Сколько я не рылся в нете сколько не искал, как то все не доходит до меня тупого). На...

Почему так(комбинации бинарных и не бинарных вводов и выводов)?
#include <string> #include <iostream> #include <fstream> #include <iomanip> using namespace...

82
Эксперт .NET
 Аватар для Rius
13827 / 7870 / 1704
Регистрация: 25.05.2015
Сообщений: 23,906
Записей в блоге: 14
15.08.2025, 13:59
Студворк — интернет-сервис помощи студентам
пакетные менеджеры на линуксе неплохо понимают, для какой проги нужна та или иная зависимость
Для этого мантейнер пакета должен хорошо потрудиться.
Когда ведение всех этих зависимостей всех задолбало, стали изобретать эти флетпаки и пр. Чем создали другую проблему - не все программы, усиленно запихиваемые в это пакеты, работают в них корректно. Зато "галочку поставили" - упаковали. Ну и о росте расхода дискового пространства также воют линуксоиды, считающие себя единственно правильными.
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
15.08.2025, 14:04
Цитата Сообщение от Royal_X Посмотреть сообщение
Все же приятно)
Чувство приятного субъективно. А объективно, ты можешь себе поставить более жирный вариант? Можешь. Ты можешь RPM поставить не на федору. Очень вряд ли. А можешь flatpack? Можешь.

Не всем "приятно" создаёт размер дистрибутива. Многим - вопрос наличия ПО под их операционку, с простой установкой.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
15.08.2025, 14:06  [ТС]
Моя позиция такая, что на винде нужно делать статическую линковку, если размер exe не превышает 20-25 МБ.

Если превышает, то в такое случае пусть dll и остальные ресурсы лежат рядом.
Еще кишки могут быть рядом, если прога устанавливается через установщик в program files. Там уже пусть эти файлы лежат отдельно, никого это не раздражает.

Но если маленькая программа, как вот bin2cpp GUI на 8 МБ, то я не вижу смысла ставить кишки рядом. К тому же, размер получится в сумме чуток больше, чем сейчас.
Мне придется положить рядом с exe не только dll от wxwidgets, но и от mingw-w64-ucrt-x86_64-gcc. Для последнего это
ibstdc++-6.dll
libgcc_s_seh-1.dll
libwinpthread-1.dll
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
15.08.2025, 14:08
Цитата Сообщение от Royal_X Посмотреть сообщение
на винде нужно делать статическую линковку, если размер exe не превышает 20-25 МБ.
Не нужно. Можно, если хочется, но практической пользы - нуль.

Цитата Сообщение от Royal_X Посмотреть сообщение
Но если маленькая программа, как вот bin2cpp GUI на 8 МБ,
А без разницы на размер программы. Распространять её надо в удобном для пользователя виде, а не красить яйца, которые никто не увидит)

Правильные приоритеты выбирать надо)
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
15.08.2025, 14:12  [ТС]
Но когда делаю на Qt, то я всегда использую динамическую линковку, чтобы не нарушать лицензию, например

https://royalxxx.itch.io/image-assemble-tool
https://royalxxx.itch.io/qt-vigenere

Да и на Qt6 как раз 25 МБ будет.

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Распространять её надо в удобном для пользователя виде,
ну вот честно скажи, тебе как удобно: один exe или с кишками?
0
Эксперт .NET
 Аватар для Rius
13827 / 7870 / 1704
Регистрация: 25.05.2015
Сообщений: 23,906
Записей в блоге: 14
15.08.2025, 14:13
В Qt можно делать и статическую, главное соблюдать условия.
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
15.08.2025, 14:13
Цитата Сообщение от Royal_X Посмотреть сообщение
то я всегда использую динамическую линковку, чтобы не нарушать лицензию, например
И много народа пожаловалось, что неудобно наличие\отсутствие библиотек рядом с бинарником?)
0
Эксперт .NET
 Аватар для Rius
13827 / 7870 / 1704
Регистрация: 25.05.2015
Сообщений: 23,906
Записей в блоге: 14
15.08.2025, 14:13
ну вот честно скажи, тебе как удобно: один exe или с кишками?
С инсталлятором или хотя бы архивом - пофиг вообще.
1
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
15.08.2025, 14:14
Цитата Сообщение от Royal_X Посмотреть сообщение
ну вот честно скажи, тебе как удобно: один exe или с кишками?
Мне удобно через установщик или пакетный менеджер. Архив с файлом мне в высшей степени не удобен. А что там и в каком количестве установщик\пакетный менеджер притащит - мне фиолетово.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
15.08.2025, 14:18  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Мне удобно через установщик
короче, ты любитель насилия над виндой: типа чтобы даже самая маленькая утилита поставлялась вместе с инсталлятором и чтобы она создавала ярлыки, в том числе в списке программ, деинсталлятор, внесла туеву кучу записей в реестре, создала по три службы, как для текущего пользователя, так и для всех, и чтобы следы программы оставались навсегда...
на линуксе и андроиде - это все понятно. Но винда - это винда: мусор остается после удаления...
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
15.08.2025, 14:20
Royal_X, в чём ты насилие тут видишь? Ты автор софтины. Не создавай ярылки, не вноси записи в реестр. Не создавай по три службы.

Из пальца высасываешь проблему?
0
Эксперт .NET
 Аватар для Rius
13827 / 7870 / 1704
Регистрация: 25.05.2015
Сообщений: 23,906
Записей в блоге: 14
15.08.2025, 14:21
Цитата Сообщение от Usaga Посмотреть сообщение
Из пальца высасываешь проблему?
Да, все стандартные доводы фанатов единых exe.
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
15.08.2025, 14:22
Кстати, что мне нужно сделать, чтобы увидеть этот самый мусор в винде и проблемы, которые он создаёт?
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
15.08.2025, 14:22  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Из пальца высасываешь проблему?
ну ты написал
Цитата Сообщение от Usaga Посмотреть сообщение
Мне удобно через установщик
ты же понимаешь, что если установщик просто установит в какую-нибудь папку без внесения записей в реестр и без создания деинсталлятора, то юзер не сможет вспомнить, куда он устанавливал, чтобы легко удалить. Все сводится к тому, что если будет установщик, то будет и все остальное) я, конечно, немного преувеличил в bin2cpp конвертер бинарных файлов в C++ файлы, то в целом идея, думаю, понятна
Винда не линукс, тут всего два варианта:
- установить в папку как portable
- установить установщиком и захламить систему
Конечно, есть магазин Windows, то он не популярен
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
15.08.2025, 14:24
Цитата Сообщение от Rius Посмотреть сообщение
Да, все стандартные доводы фанатов единых exe.
Ну да. Единственные адекватные доводы я видел от авторов .NET, когда -p:PublishSingleFile=true добавили. Мол, для оптимизации скорости запуска (что для жирных корпоративных приложений может быть важно). И от авторов Go, что мол, под контейнеры подгоняли, чтобы зависимостей в контейнере не надо было.

Остальное всё вот такое вот...
0
Эксперт .NET
 Аватар для Rius
13827 / 7870 / 1704
Регистрация: 25.05.2015
Сообщений: 23,906
Записей в блоге: 14
15.08.2025, 14:25
Цитата Сообщение от Usaga Посмотреть сообщение
Единственные адекватные доводы я видел от авторов .NET, когда -p:PublishSingleFile=true добавили.
Ещё был один, который хотел всё в одну либу паковать. Потому что программа-хост умела загружать плагины только в виде одного файла и никак иначе.

Все остальные единофайловцы только про крутизну пишут.
0
Эксперт .NET
 Аватар для Usaga
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
15.08.2025, 14:26
Цитата Сообщение от Royal_X Посмотреть сообщение
юзер не сможет вспомнить, куда он устанавливал
Ему это зачем знать? И какой ему вред от записи в реестре?
0
Эксперт .NET
 Аватар для Rius
13827 / 7870 / 1704
Регистрация: 25.05.2015
Сообщений: 23,906
Записей в блоге: 14
15.08.2025, 14:27
Цитата Сообщение от Royal_X Посмотреть сообщение
Винда не линукс, тут всего два варианта:
- установить в папку как portable
- установить установщиком и захламить систему
3. Сделать веб-приложение и открывать в браузере, вообще не "мусоря".
0
15.08.2025, 14:29

Не по теме:

Тема несколько свалилась в холивар, но инсталятор не обязательно создаёт записи в реестре, а один ехе также может насоздавать кучу мусора.

Я скорее хотел отметить что либы под боком надёжнее в некоторых сценариях. Цена такого удовольствия: трафик и место. Установка глобальных либ тоже имеет смысл, причём не только в плане экономии.

0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,603
15.08.2025, 14:30  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
И какой ему вред от записи в реестре?
есть два вида юзеров: те, которым плевать на чистоту в реестре (они просто периодически сносят винду и ставят заново), и, те которые следят, чтобы там не было мусора. Например, https://calibre-ebook.com/ очень хорошая прога. Но она оставляет столько мусора в реестре, причем хаотично, что все проги вместе взятые не оставляют...

Добавлено через 1 минуту
Цитата Сообщение от Wolfdp Посмотреть сообщение
но инсталятор не обязательно создаёт записи в реестре
записи, чтобы в списке программ появилось...
если установщик тупо для копирования, то есесена ничего не создает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2025, 14:30

Конвертер бинарных данных
Хочу написать конвертер бинарного файла, который переводит его на читабельный вид. Есть описание...

Обработка текстовых файлов. Обработка бинарных файлов. Сериализация и десериализация объектов
Запросить у пользователя необходимость повторения работы программы. В случае если пользователь...

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

Какой путь бинарных файлов Апача в Ubuntu?
Zend Optimizer просит: какой путь бинарных файлов Апача в Ubuntu?

Обработка текстовых и бинарных файлов.
Текстовые №1. Создать два текстовых файла, слова, содержащиеся в обоих файлах одновременно, удалить...


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

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

Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru