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
У программы есть глюк — она не удалит последнюю запятую, если размер файла будет кратен восьми. Ну меня устраивал и такой вариант.
Комментарии