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

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

14.08.2025, 23:38. Показов 5330. Ответов 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
13683 / 7863 / 1702
Регистрация: 25.05.2015
Сообщений: 23,877
Записей в блоге: 14
15.08.2025, 13:59
Студворк — интернет-сервис помощи студентам
пакетные менеджеры на линуксе неплохо понимают, для какой проги нужна та или иная зависимость
Для этого мантейнер пакета должен хорошо потрудиться.
Когда ведение всех этих зависимостей всех задолбало, стали изобретать эти флетпаки и пр. Чем создали другую проблему - не все программы, усиленно запихиваемые в это пакеты, работают в них корректно. Зато "галочку поставили" - упаковали. Ну и о росте расхода дискового пространства также воют линуксоиды, считающие себя единственно правильными.
0
Эксперт .NET
 Аватар для Usaga
14727 / 9500 / 1362
Регистрация: 21.01.2016
Сообщений: 35,829
15.08.2025, 14:04
Цитата Сообщение от Royal_X Посмотреть сообщение
Все же приятно)
Чувство приятного субъективно. А объективно, ты можешь себе поставить более жирный вариант? Можешь. Ты можешь RPM поставить не на федору. Очень вряд ли. А можешь flatpack? Можешь.

Не всем "приятно" создаёт размер дистрибутива. Многим - вопрос наличия ПО под их операционку, с простой установкой.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
14727 / 9500 / 1362
Регистрация: 21.01.2016
Сообщений: 35,829
15.08.2025, 14:08
Цитата Сообщение от Royal_X Посмотреть сообщение
на винде нужно делать статическую линковку, если размер exe не превышает 20-25 МБ.
Не нужно. Можно, если хочется, но практической пользы - нуль.

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

Правильные приоритеты выбирать надо)
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
13683 / 7863 / 1702
Регистрация: 25.05.2015
Сообщений: 23,877
Записей в блоге: 14
15.08.2025, 14:13
В Qt можно делать и статическую, главное соблюдать условия.
0
Эксперт .NET
 Аватар для Usaga
14727 / 9500 / 1362
Регистрация: 21.01.2016
Сообщений: 35,829
15.08.2025, 14:13
Цитата Сообщение от Royal_X Посмотреть сообщение
то я всегда использую динамическую линковку, чтобы не нарушать лицензию, например
И много народа пожаловалось, что неудобно наличие\отсутствие библиотек рядом с бинарником?)
0
Эксперт .NET
 Аватар для Rius
13683 / 7863 / 1702
Регистрация: 25.05.2015
Сообщений: 23,877
Записей в блоге: 14
15.08.2025, 14:13
ну вот честно скажи, тебе как удобно: один exe или с кишками?
С инсталлятором или хотя бы архивом - пофиг вообще.
1
Эксперт .NET
 Аватар для Usaga
14727 / 9500 / 1362
Регистрация: 21.01.2016
Сообщений: 35,829
15.08.2025, 14:14
Цитата Сообщение от Royal_X Посмотреть сообщение
ну вот честно скажи, тебе как удобно: один exe или с кишками?
Мне удобно через установщик или пакетный менеджер. Архив с файлом мне в высшей степени не удобен. А что там и в каком количестве установщик\пакетный менеджер притащит - мне фиолетово.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
15.08.2025, 14:18  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Мне удобно через установщик
короче, ты любитель насилия над виндой: типа чтобы даже самая маленькая утилита поставлялась вместе с инсталлятором и чтобы она создавала ярлыки, в том числе в списке программ, деинсталлятор, внесла туеву кучу записей в реестре, создала по три службы, как для текущего пользователя, так и для всех, и чтобы следы программы оставались навсегда...
на линуксе и андроиде - это все понятно. Но винда - это винда: мусор остается после удаления...
0
Эксперт .NET
 Аватар для Usaga
14727 / 9500 / 1362
Регистрация: 21.01.2016
Сообщений: 35,829
15.08.2025, 14:20
Royal_X, в чём ты насилие тут видишь? Ты автор софтины. Не создавай ярылки, не вноси записи в реестр. Не создавай по три службы.

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

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

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

Не по теме:

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

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

0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
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
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru