Bin2C — преобразование бинарных файлов в массив C/C++
Комментариев:
Понадобилось мне в одной CGIшке, написанной на СИ, выдавать картинки, причем их не надо было создавать налету, они уже были в виде GIF файлов. Найти bin2c написанной пару лет назад (я думаю, что уже писал такую утилитку, и не один раз) не удалось, по этому быстренько написал на том, что было под рукой — PHP.
Вот рабочий вариант:
Вот исходник:
<?$d="\t";if (isset($_FILES["userfile"])) {Header("Content-Type: text/plain");$size=@filesize($_FILES["userfile"]["tmp_name"]);if ($size<100000 && $size>0) {$fd=fopen($_FILES["userfile"]["tmp_name"],"r");$contents=fread ($fd,$size);fclose ($fd);for ($i=0;$i<$size;$i++) {$d.=sprintf("0x%02X",ord($contents[$i]));$d.=(($i-7)%8)?", ":", \n\t";}}print "const int data_size=".$size.";\nchar data[]={\n".substr($d,0,-2)."\n};";}else {$SITE["title"]="Bin2C - преобразование бинарных файлов в массив C/C++";?><H1>Bin2C - преобразование бинарных файлов в массив C/C++ </H1><table align=center><form enctype="multipart/form-data" action="index.php" method="post"><input type="hidden" name="MAX_FILE_SIZE" value="100000"><tr><td>Файл:</td><td><input name="userfile" type="file"></td></tr><tr><td align=center colspan=2><input type="submit" value="Отправить"></td></tr></form></table><?}?>
Download this code: bin2c.phps
У программы есть глюк — она не удалит последнюю запятую, если размер файла будет кратен восьми. Ну меня устраивал и такой вариант.