Bin2C — преобразование бинарных файлов в массив C/C++

Bin2C — преобразование бинарных файлов в массив C/C++

Bin2C — преобразование бинарных файлов в массив C/C++

Понадобилось мне в одной CGIшке, написанной на СИ, выдавать картинки, причем их не надо было создавать налету, они уже были в виде GIF файлов. Найти bin2c написанной пару лет назад (я думаю, что уже писал такую утилитку, и не один раз) не удалось, по этому быстренько написал на том, что было под рукой — PHP.

Вот рабочий вариант:

Файл:

Вот исходник:

  1. <?
  2. $d="\t";
  3.  
  4. if (isset($_FILES["userfile"])) {
  5. Header("Content-Type: text/plain");
  6.  
  7. $size=@filesize($_FILES["userfile"]["tmp_name"]);
  8. if ($size<100000 && $size>0) {
  9. $fd=fopen($_FILES["userfile"]["tmp_name"],"r");
  10. $contents=fread ($fd,$size);
  11. fclose ($fd);
  12. for ($i=0;$i<$size;$i++) {
  13. $d.=sprintf("0x%02X",ord($contents[$i]));
  14. $d.=(($i-7)%8)?", ":", \n\t";
  15. }
  16. }
  17. print "const int data_size=".$size.";\nchar data[]={\n".substr($d,0,-2)."\n};";
  18. }
  19. else {
  20. $SITE["title"]="Bin2C - преобразование бинарных файлов в массив C/C++";
  21. ?>
  22. <H1>Bin2C - преобразование бинарных файлов в массив C/C++ </H1>
  23.  
  24. <table align=center>
  25. <form enctype="multipart/form-data" action="index.php" method="post">
  26. <input type="hidden" name="MAX_FILE_SIZE" value="100000">
  27. <tr><td>Файл:</td><td><input name="userfile" type="file"></td></tr>
  28. <tr><td align=center colspan=2><input type="submit" value="Отправить"></td></tr>
  29. </form></table>
  30. <?
  31. }
  32. ?>

Download this code: bin2c.phps

У программы есть глюк — она не удалит последнюю запятую, если размер файла будет кратен восьми. Ну меня устраивал и такой вариант.

Комментарии