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...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen von zwei bytes von zwei-Byte und tun:
printf
Aussage, die ich bin, die aufptr[i]
undptr[i + 1]
so in Siefor
Schleife haben Sie auch änderni++
undi += 2
.