header auslesen die 2te
-
hi leute,
ich bin hier am verzweifeln :(,
zeh will nicht so wie ich will...also mein problem:
ich moechte eine au datei auslesen, und zwar zuerst den header und den datenteil spaeter. und das ganze mit folgendem code:struct header { signed int magicnumber; signed int headersize; signed int datalength; signed int encoding; signed int samplerate; signed int noofchannels; } function readheader () { FILE * fp = fopen("test.au","rb"); if (fp) { struct header head; fread(&head,sizeof(head),1,fp); ... } ... }
gebe ich nun z.B. head.magicnumber oder andere head.xyz aus,
bekomme ich nette, ziemlich grosse integers, z.T. auch negativ.
zum einen koennen die zahlen gar nicht stimmen, weil sie viel zu gross sind, zum anderen wollte ich eigentlich das ganze in der form
0x2e736e64 z.B. als magicnumber fuer eine gueltige au datei.was mache ich also falsch?
danke fuer eure hilfe.
-
@zeh++, stimmen die Datentypen deiner Struktur mit den Daten in der Datei überein? Sind die gespeicherten Daten signed? Wenn du sie anschließend in hexadezimalform haben willst hilft dir printf mit dem Format x oder X.
-
sollte eigentlich so funzen wie du es gemacht hast...
eventuell musst du diese big-little-endian problematik beachten...das ganze lässt sich leicht herausfinden indem du einfach mal den header byte für byte ausgibst und guckst wann in nem hexeditor angezeigt wird