PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Intel - Hex Konverter



helvin
06-03-2006, 18:21
Ich soll eine Funktion erstellen die aus einem Intel-Hex Format die Daten im ASCII Format extrahiert, und entweder binär oder als ASCII Zeichen zurück gibt.

Hat jemand einen guten vorschlag wie man das lösen kann.

Danke

peschmae
06-03-2006, 18:37
Wie sieht Intel-Hex genau aus?

MfG Peschmä

helvin
06-03-2006, 18:45
ich glaube es ist ein normaler HexCode denn ich als Binär oder ASCII Code verwandeln soll.

Mfg, elvin

peschmae
06-03-2006, 19:15
Hexcode? Also einfach eine Binärdatei?

Eventuell guckst du mal hexdump an (auch möglich dass ich falsch verstanden hab was du eigentlich willst)

MfG Peschmä

BinEinGast
06-03-2006, 21:27
Ich soll eine Funktion erstellen die aus einem Intel-Hex Format die Daten im ASCII Format extrahiert, und entweder binär oder als ASCII Zeichen zurück gibt.

Hat jemand einen guten vorschlag wie man das lösen kann.

Danke

ich verstehe die frage auch nicht so richtig.

1. möglichkeit: du möchtest eine binärdatei bitweise ausgeben
pseudocode:


uchar c;
uchar c2;
int i;

while(!EndOfFile()) {
c = getNextChar();
for(i = 0; i < 8; i++) {
c2 = (c >> (7 - i)) & 0x01;
printf("%d", c2);
}
printf("\n");
}

bei unklarheiten einfach fragen

2. möglichkeit
du hast eine binärdatei und weißt, daß diese einen programmcode für einen pentium enthält. ein pentium speichert seine werte (glaube ich) little endian ab, d.h. du müßtest den code in big endian konvertieren und dann bitweise ausgeben. (kann ich mir aber nicht vorstellen, weil man dazu erst die maschinenbefehle [jeweils mit unterschiedlicher länge] ausparsen müßte). ist das eine uni-, schul-, arbeits- oder sonstige aufgabe?

helvin
07-03-2006, 18:39
Das ist Aufgabe fur die Fachhochschule

helvin
09-03-2006, 18:50
ich denke das ich es so machen soll, aber ich komme nicht drauf wie ich ganzen TEXT aus der Datei auslese und am Bildschirm zeige.Weil er zeigt mir jetzt nur die ERSTE zeile von den ganzen TEXT.

#include <stdio.h>

int main(void)
{
FILE * pFile;

char string [1024];

pFile = fopen ("hex.txt" , "r");

if (pFile == NULL) perror ("Error opening file");

else {
fgets (string , 1024 , pFile);

puts (string);

fclose (pFile);
}

return 0;
}

Kann mir jemand sagen wie ich das machen soll?

helvin
09-03-2006, 18:50
danach kann will ich den HEX-text als BINAER ausgeben.

jeebee
09-03-2006, 19:31
versuchs mal mit
while(fgets(line, sizeof(line), file) != 0) {
/* etwas mit den eingelesenen Daten machen */
}
fclose(file);

helvin
09-03-2006, 19:52
Ich weiss aber nicht wie viele Zeilen mein TEXT hat, deswegwn will ich den ganzen text ZEILENWEISE ausgeben, und das faelt mir nicht ein.

jeebee
09-03-2006, 21:17
nun, mit fgets() liest du eine Zeile des Textes und solange fgets() nicht 0 zurückgibt, gibts noch weitere Linien in der Datei...

helvin
09-03-2006, 21:26
ich habe das gemacht,

#include <stdio.h>
#include <string.h>



int main( int argc, char **argv )
{
// Parameter 1 des Aufrufs ist die Quelldatei

FILE *pFile = fopen( "hex.txt", "r" );

if (pFile == NULL) perror ("Error opening file");


//Zählvariable i für die Ausgabe

int i ;

char inhalt[1024];

while( fgets(inhalt, 1024, pFile) != NULL )
{
for ( i = 9; i <= (strlen(inhalt) - 4); i++) /*Funktion strlen gibt mir die Laenge
von der GANZEN Zeile zueruck*/
{
printf("%c", inhalt[i]);
}

printf("\n",inhalt[i]);

}

fclose( pFile );

return 0;
}

aber ich weis aber nicht wie ich die Ausgabe in einem Binaer Code und ASCII Code umwandle.

Fuer Binaer soll er so berechnen:

10 + 01 + 00 + 00 + 21 + 46 + 01 + 36 + 01 + 21 + 47 + 01 + 36 + 00 + 7E + FE + 09 + D2 + 19 + 01 = 3C0