Форум программистов, компьютерный форум, киберфорум
Проекты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6767 / 3126 / 1065
Регистрация: 01.06.2021
Сообщений: 12,102

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

14.08.2025, 23:38. Показов 6272. Ответов 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
13831 / 7904 / 1708
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
15.08.2025, 13:59
Студворк — интернет-сервис помощи студентам
пакетные менеджеры на линуксе неплохо понимают, для какой проги нужна та или иная зависимость
Для этого мантейнер пакета должен хорошо потрудиться.
Когда ведение всех этих зависимостей всех задолбало, стали изобретать эти флетпаки и пр. Чем создали другую проблему - не все программы, усиленно запихиваемые в это пакеты, работают в них корректно. Зато "галочку поставили" - упаковали. Ну и о росте расхода дискового пространства также воют линуксоиды, считающие себя единственно правильными.
0
Эксперт .NET
 Аватар для Usaga
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,155
15.08.2025, 14:04
Цитата Сообщение от Royal_X Посмотреть сообщение
Все же приятно)
Чувство приятного субъективно. А объективно, ты можешь себе поставить более жирный вариант? Можешь. Ты можешь RPM поставить не на федору. Очень вряд ли. А можешь flatpack? Можешь.

Не всем "приятно" создаёт размер дистрибутива. Многим - вопрос наличия ПО под их операционку, с простой установкой.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6767 / 3126 / 1065
Регистрация: 01.06.2021
Сообщений: 12,102
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
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,155
15.08.2025, 14:08
Цитата Сообщение от Royal_X Посмотреть сообщение
на винде нужно делать статическую линковку, если размер exe не превышает 20-25 МБ.
Не нужно. Можно, если хочется, но практической пользы - нуль.

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

Правильные приоритеты выбирать надо)
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6767 / 3126 / 1065
Регистрация: 01.06.2021
Сообщений: 12,102
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
13831 / 7904 / 1708
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
15.08.2025, 14:13
В Qt можно делать и статическую, главное соблюдать условия.
0
Эксперт .NET
 Аватар для Usaga
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,155
15.08.2025, 14:13
Цитата Сообщение от Royal_X Посмотреть сообщение
то я всегда использую динамическую линковку, чтобы не нарушать лицензию, например
И много народа пожаловалось, что неудобно наличие\отсутствие библиотек рядом с бинарником?)
0
Эксперт .NET
 Аватар для Rius
13831 / 7904 / 1708
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
15.08.2025, 14:13
ну вот честно скажи, тебе как удобно: один exe или с кишками?
С инсталлятором или хотя бы архивом - пофиг вообще.
1
Эксперт .NET
 Аватар для Usaga
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,155
15.08.2025, 14:14
Цитата Сообщение от Royal_X Посмотреть сообщение
ну вот честно скажи, тебе как удобно: один exe или с кишками?
Мне удобно через установщик или пакетный менеджер. Архив с файлом мне в высшей степени не удобен. А что там и в каком количестве установщик\пакетный менеджер притащит - мне фиолетово.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6767 / 3126 / 1065
Регистрация: 01.06.2021
Сообщений: 12,102
15.08.2025, 14:18  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Мне удобно через установщик
короче, ты любитель насилия над виндой: типа чтобы даже самая маленькая утилита поставлялась вместе с инсталлятором и чтобы она создавала ярлыки, в том числе в списке программ, деинсталлятор, внесла туеву кучу записей в реестре, создала по три службы, как для текущего пользователя, так и для всех, и чтобы следы программы оставались навсегда...
на линуксе и андроиде - это все понятно. Но винда - это винда: мусор остается после удаления...
0
Эксперт .NET
 Аватар для Usaga
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,155
15.08.2025, 14:20
Royal_X, в чём ты насилие тут видишь? Ты автор софтины. Не создавай ярылки, не вноси записи в реестр. Не создавай по три службы.

Из пальца высасываешь проблему?
0
Эксперт .NET
 Аватар для Rius
13831 / 7904 / 1708
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
15.08.2025, 14:21
Цитата Сообщение от Usaga Посмотреть сообщение
Из пальца высасываешь проблему?
Да, все стандартные доводы фанатов единых exe.
0
Эксперт .NET
 Аватар для Usaga
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,155
15.08.2025, 14:22
Кстати, что мне нужно сделать, чтобы увидеть этот самый мусор в винде и проблемы, которые он создаёт?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6767 / 3126 / 1065
Регистрация: 01.06.2021
Сообщений: 12,102
15.08.2025, 14:22  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Из пальца высасываешь проблему?
ну ты написал
Цитата Сообщение от Usaga Посмотреть сообщение
Мне удобно через установщик
ты же понимаешь, что если установщик просто установит в какую-нибудь папку без внесения записей в реестр и без создания деинсталлятора, то юзер не сможет вспомнить, куда он устанавливал, чтобы легко удалить. Все сводится к тому, что если будет установщик, то будет и все остальное) я, конечно, немного преувеличил в bin2cpp конвертер бинарных файлов в C++ файлы, то в целом идея, думаю, понятна
Винда не линукс, тут всего два варианта:
- установить в папку как portable
- установить установщиком и захламить систему
Конечно, есть магазин Windows, то он не популярен
0
Эксперт .NET
 Аватар для Usaga
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,155
15.08.2025, 14:24
Цитата Сообщение от Rius Посмотреть сообщение
Да, все стандартные доводы фанатов единых exe.
Ну да. Единственные адекватные доводы я видел от авторов .NET, когда -p:PublishSingleFile=true добавили. Мол, для оптимизации скорости запуска (что для жирных корпоративных приложений может быть важно). И от авторов Go, что мол, под контейнеры подгоняли, чтобы зависимостей в контейнере не надо было.

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

Все остальные единофайловцы только про крутизну пишут.
0
Эксперт .NET
 Аватар для Usaga
14821 / 9605 / 1369
Регистрация: 21.01.2016
Сообщений: 36,155
15.08.2025, 14:26
Цитата Сообщение от Royal_X Посмотреть сообщение
юзер не сможет вспомнить, куда он устанавливал
Ему это зачем знать? И какой ему вред от записи в реестре?
0
Эксперт .NET
 Аватар для Rius
13831 / 7904 / 1708
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
15.08.2025, 14:27
Цитата Сообщение от Royal_X Посмотреть сообщение
Винда не линукс, тут всего два варианта:
- установить в папку как portable
- установить установщиком и захламить систему
3. Сделать веб-приложение и открывать в браузере, вообще не "мусоря".
0
15.08.2025, 14:29

Не по теме:

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

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

0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6767 / 3126 / 1065
Регистрация: 01.06.2021
Сообщений: 12,102
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
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru