zum drucken von 2 oder 4 bytes in hex-format in C

Ich brauche, um zu drucken bytes in hexadecimal form in C. Alle ich habe es geschafft, zu tun ist, drucken 1 byte zu einem Zeitpunkt, wo mein Programm die option für 1, 2 oder 4 Byte (size-parameter).
das ist meine Funktion:

void memDisaply(char* filename, int size) {

char sentence [100];
unsigned int str[20];
int length,i;
unsigned char* ptr;

printf("Please enter <address> <length>\n");

fflush(stdin);
fgets(sentence,100,stdin);
fgets(sentence,100,stdin);

    sscanf (sentence,"%x %d",str,&length);
    ptr = (unsigned char*)str;

    for (i=0 ; i< length ; i++) {
        printf ("%02x",(unsigned int)ptr[i]);
    }

    /*reset values*/
    length = 0;
    i = 0;
    ptr = NULL;
}

die Ausgabe ist wie folgt (wobei Größe=1 und Länge= 10):

31 ED 5E 89 E1 83 E4 F0 50 54

Muss ich, dass, wenn size = 2 und length = 5 dass der Ausgang sein wird:

ED31 895E 83E1 F0E4 5450

(beachten Sie die little endian)
Ich habe irgendwie verwenden müssen, das argument Größe zu ändern, den Ausgang aber ich weiß nicht, wie.
Ich nehme an, es hat etwas zu tun mit der %02x - format, und ich habe versucht %04x aber alles was ich bekam war:

0031 00ED 005E 0089 00E1 0083 00E4 00F0 0050 0054
  • Ich glaube nicht, dass Sie Ihre Ausgabe mit der code. Du hast Leerzeichen in der Ausgabe, aber nicht in das format string.
  • du hast Recht ich habe vergessen ein Leerzeichen, aber das war nicht das problem...
InformationsquelleAutor nadavbara | 2014-05-16
Schreibe einen Kommentar