File Bin2Hex exporta cualquier binario a hexadecimal (\xXX) en un documento de texto para que luego pueda ser más manejable a la hora de editarlo y/o exportarlo desde C/Perl.
PD: Si lo intento compilar con VC++ me da 8 errores y 42 warnings, en cambio con Dev-C++ lo compila perfectamente, ¿alguien sabe por qué es?
Descarga: http://www.streamupload.com/download.aspx?fileID=20076843739
MD5 Hash: 0960b5b10093f122fb27bd0c9014d7f7
Código
#include <stdio.h>
// File Bin2Hex 1.0 by YeIk0s - yeikos (at) gmail (dot) com
// Este programa es software libre. Puede redistribuirlo y/o modificarlo
// bajo los términos de la Licencia Publica General de GNU según es publicada
// por la Free Software Foundation, bien de la versión 2 de dicha Licencia
// o bien (según su elección) de cualquier versión posterior.
// Este programa se distribuye con la esperanza de que sea útil,
// pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o
// sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR.
// Véase la Licencia Publica General de GNU para mas detalles.
// http://www.gnu.org/copyleft/gpl.html
// bin2hex.c compilado con Dev-C++ 4.9.9.2
int main(int argc, char **argv)
{
float x; float y; unsigned char End; unsigned int Error; unsigned int size; char Re;
unsigned int i; unsigned char strFile[255] = ""; unsigned char strFileB[255] = "";
if (argc < 2) {
printf ("\nFile Bin2Hex 1.0 by YeIk0s - yeikos (at) gmail (dot) com \n");
printf ("\nUso: %s archivo\n",argv[0]);
return 1;
}
strcat(strFile,argv[1]);
for (i = strlen (argv[1]); i > 0; i--) {
if (argv[1][i] == '.') {
strFile[i] = '\0';
break;
}
}
strcpy(strFileB,strFile);
strcat(strFileB,".txt");
Error=strcmp(strFileB, argv[1]);
if (Error==0) {
strcat(strFile,"~.txt");
} else {
strcpy(strFile,strFileB);
}
FILE *MyFile; MyFile = fopen(argv[1], "rb");
if(!MyFile) {
printf("\nOcurrio un error de lectura.\n");
return 1;
}
FILE *FileExist; FileExist = fopen(strFile, "r");
if (FileExist) {
printf("\nEl archivo %s ya existe, desea reemplazarlo? S/N: ", strFile);
scanf( "%s", &Re );
if (toupper(Re)!='S' && toupper(Re)!='Y') {
return 1;
}
}
FILE *ExportFile; ExportFile = fopen(strFile, "w+");
if(!ExportFile) {
printf("\nOcurrio un error de escritura.\n");
return 1;
}
fseek(MyFile, 0L, SEEK_END);
size=ftell(MyFile);
fseek(MyFile, 0L, SEEK_SET);
fwrite("\"", 1, 1, ExportFile);
while(1) {
x = ftell(MyFile);
y = ((x+1)/16);
if (ftell(MyFile) == size) { break; }
char strHex[3] = "";
sprintf(strHex, "\\x%02X", (unsigned char) fgetc(MyFile));
fwrite(strHex, 4, 1, ExportFile);
if (y-(int)y==0) {
if (ftell(MyFile)==size) {
End = 1; fwrite("\";", 2, 1, ExportFile);
} else {
fwrite("\".\n\"", 4, 1, ExportFile);
}
}
}
if (End!=1) {
fwrite("\";", 2, 1, ExportFile);
}
if(fclose(MyFile) || fclose(ExportFile)) {
printf("\nOcurrio un error de lectura/escritura.\n");
return 1;
}
return 0;
}










Autor



En línea




.
