Merhaba arkadaşlar,
Bu yazımda sizlere bir vesile ile karşılaşmış olduğum araçtan bahsedeceğim. Aracın adı Bin2C. Basit bir konsol uygulaması. Hem ilk aklınıza gelen soru ya da gelmediyse gelmesi gereken ne yapar bu araç?
Özellikle gömülü yazılım geliştirenler ya da yardımcı dosyaları kodun içine gömmeyi sevenler (ki ben zorunlu haller dışında (herhangi bir disk, güvenlik vs) bu yola girmiyorum), basit font ya da resim dosyaları gibi “binary” verileri bir dizi şeklinde ifade etmek ihtiyacı duyabiliyorlar. Bu sayede bu dosyaların sayısal dizilimini kod içerisinden verip daha sonra bunu kullanabiliyorsunuz. Bu ufak veriler için kolay olsa da resim gibi dosyalar için külfet olabiliyor, hele de bu işi otomatikleştirmek istiyorsanız, ya kendiniz bir uygulama geliştirip çevireceksiniz (bu zamana kadar hep öyle yaptım) ya da bu tarz uygulamalar kullanacaksınız.
Uygulamayı aşağıdaki adresten indirebilirsiniz:
https://www.segger.com/downloads/free-utilities/Bin2C
Evet, sonuç olara bu yazılım basitçe, komut satırında vermiş olduğunuz dosyayı okuyup, bir C/C++ dizisi olarak size sunabiliyor. Aşağıda örnek bir kullanım görebilirsiniz (kendi sayfasından):
Bu arada yukarıdaki gibi ASCII dosyaları da verebilirsiniz. Yukarıda bahsi geçen girdi dosyası (test.html) aşağıdaki gibi:
1 2 3 4 5 6 7 8 9 10 11 12 |
<html> <head> <title>Testpage</title> </head> <body> <p>This is a test paragraph</p> <ol> <li>This is a test list entry 0</li> <li>This is a test list entry 1</li> </ol> </body> </html> |
Bu uygulamayı “Bin2C.exe test.html index” olarak çağırdığınızda aşağıdaki çıktı dosyalarını, sırayla test.h ve test.c elde edebilirsiniz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/********************************************************************* * SEGGER MICROCONTROLLER GmbH & Co. KG * * Solutions for real time microcontroller applications * ********************************************************************** * * * (c) 2002 - 2015 SEGGER Microcontroller GmbH & Co. KG * * * * www.segger.com Support: support@segger.com * * * ********************************************************************** ---------------------------------------------------------------------- File : test.h Purpose : Automatically created from test.html using Bin2C.exe -------- END-OF-HEADER --------------------------------------------- */ #ifndef __TEST_H__ #define __TEST_H__ #define TEST_SIZE 198 extern const unsigned char test_file[198]; #endif //__TEST_H__ /****** End Of File *************************************************/ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
/********************************************************************* * SEGGER MICROCONTROLLER GmbH & Co. KG * * Solutions for real time microcontroller applications * ********************************************************************** * * * (c) 2002 - 2015 SEGGER Microcontroller GmbH & Co. KG * * * * www.segger.com Support: support@segger.com * * * ********************************************************************** ---------------------------------------------------------------------- File : test.c Purpose : Automatically created from test.html using Bin2C.exe -------- END-OF-HEADER --------------------------------------------- */ #include "test.h" const unsigned char test_file[198] = { 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0x0d, 0x0a, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x3c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0x0d, 0x0a, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x54, 0x65, 0x73, 0x74, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e, 0x0d, 0x0a, 0x3c, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, 0x3c, 0x70, 0x3e, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x3c, 0x2f, 0x70, 0x3e, 0x0d, 0x0a, 0x3c, 0x6f, 0x6c, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x3e, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x30, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x0d, 0x0a, 0x20, 0x20, 0x3c, 0x6c, 0x69, 0x3e, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x31, 0x3c, 0x2f, 0x6c, 0x69, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x6f, 0x6c, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0x0d, 0x0a, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, }; /****** End Of File *************************************************/ |
Umarım, faydalı olur. Eğer siz de benim gibi, üretilen dosyalar içerisindekileri değiştirmek istiyorsanız. Kolları sıvayıp, yukarıdaki çıktılardan fezy alıp, kendi uygulamanızı geliştirebilirsiniz.
Bir sonraki yazımda görüşmek dileğiyle, bol kodlu günler 🙂