C
Hallo alle zusammen,
Was du willst is glaub ich nen HexViewer, keinen Hexeditor ; - ) ODA?
Ich hab da mal was geschrieben, allerdings hat der Kack hier noch n paar Probleme mit Umlauten und Sonderzeichen, vielleicht liegt das aber auch an dem Zeichensatz meines Rechners. Naja, hier is mal der Code zum testen.
#include <stdio.h>
#include <string.h>
void print_head(void)
{
printf("\n\t +++++++++++++++++++++++++++++++++++++++++\n"
"\t +++++++++++++++++HEX_VIEW++++++++++++++++\n"
"\t +++++++++++++++++++++++++++++++++++++++++\n\n");
}
void print_usage(char *s)
{
printf("\t usage: hexview -f file [-d dump_file]\n\n", s);
}
int hex_view(char *file, char *dump_file)
{
FILE *f1, *f2;
char c,row[16];
int i=0,j=0,k=0;
if ( dump_file != NULL )
{
f2=fopen(dump_file,"w");
}
f1=fopen(file,"r");
if ( f1 == NULL || f2 == NULL )
{
printf("couldn´t open some files\n");
return 4;
}
while ( !feof(f1) )
{
fscanf(f1,"%c",&c);
if ( c == '\n' )
c = '.';
else
row[i++]=c;
if ( i == 16 )
{
printf("0x%.8x | ", k);
k+=0x10;
for (i=0;i<16;i++)
printf("%.2x ", row[i]);
printf("| ");
for (i=0;i<16;i++)
printf("%c", row[i]);
printf("\n");
i=0;
}
}
printf("0x%.8x | ", k+=0x10);
for (;j<i;j++)
printf("%.2x ", row[j]);
for (;j<16;j++)
printf(" ");
printf("| ");
for (j=0;j<i;j++)
printf("%c", row[j]);
for (;j<16;j++)
printf(".");
printf("\n");
return 0;
}
int main(int argc, char **argv)
{
int i=1;
char *file,*dump_file=NULL;
print_head();
if (argc < 2)
{
print_usage(argv[0]);
return 1;
}
//argument check
for (;i<argc;i++)
{
//check for file, which should be hex-viewed
if ( !strcmp(argv[i],"-f") )
{
if ( i+1 == argc )
{
printf("\nmissing filename\n");
return 2;
}
file=argv[i+1];
}
//check for dump_file
if ( !strcmp(argv[i],"-d") )
{
if ( i+1 == argc )
{
printf("\nmissing dump_filename\n");
return 3;
}
dump_file=argv[i+1];
}
}
return hex_view(file,dump_file);
}
Die dump_option is quatsch, man kann die Ausgabe ja auch mittels '>' umlenken.
Wenn was falsch is oder was besser gemacht gehört, dann bitte schreiben.
Danke schon mal!
Tschö