Big-Endinan mit fread ?
-
Hallo Zusammen,
Ich bin gerade dabei einen Dateiformat zu entschlüsseln, und ich habe nach dem 10. versuch endlich gemerkt (nach diversen test mit c++) das die Datei in Big-Endian erstellt worden ist. Ich möchte einen einfachen float wert auslesen, bloß habe ich garkein Idee, wie ich das mit Big-Endian und fread() hin kriege.Habt ihr Ideen, wie ich einen float wert (4 byte) einfach auslesen kann?
Als Besipiel habe ich den Wert 2.00 genommen.
Wenn ich den Wert in eine Datei schreibe, kommt als Ergebnis:0x0000803F
So weit okay, das kann ich mit fread bequem auslesen, und 2.00 kommt auch raus. Bloß in der Datei steht für 2.00:
00x3F800000
Ich weiß nicht wie ich das hier auslesen kann ?!
Ich bitte um hilfe
mfg Ercan
-
-
endian-guru schrieb:
was hat mein problem mit Netwerk zu tun ^^
?
Mfg Ercam
-
void swap( char* v1, char* v2 ) { char tmp = *v1; *v1 = *v2; *v2 = tmp; } void SwapEndian( float* val ) { char* ptr = (char*)val; swap( &ptr[0], &ptr[3] ); swap( &ptr[1], &ptr[2] ); } float value = 2.0; // Aus Datei auslesen SwapEndian( &value ); // oder aber *((int*)&val) = htonl( *((int*)&val) );
funktioniert aber nur, wenn int und float beide 4 Byte groß sind..
-
Badestrand schrieb:
void swap( char* v1, char* v2 ) { char tmp = *v1; *v1 = *v2; *v2 = tmp; } void SwapEndian( float* val ) { char* ptr = (char*)val; swap( &ptr[0], &ptr[3] ); swap( &ptr[1], &ptr[2] ); } float value = 2.0; // Aus Datei auslesen SwapEndian( &value ); // oder aber *((int*)&val) = htonl( *((int*)&val) );
funktioniert aber nur, wenn int und float beide 4 Byte groß sind..
Hey super, genau DAS habe ich gesucht
Mensch danke, hast mir echt sehr geholfen, jetzt muss ich keine temp Datei mehr anlegen, ich konnte long in little endian umwandeln, aber kein floatmfg Ercan
-
e-izmir-a schrieb:
was hat mein problem mit Netwerk zu tun?
nix, nur dass es schon fertige funktionen dafür gibt.
-
latäxx schrieb:
e-izmir-a schrieb:
was hat mein problem mit Netwerk zu tun?
nix, nur dass es schon fertige funktionen dafür gibt.
htonl() habe ich kurz garnicht kapiert, jetzt weiß ich was ihr meint
Danke an euch alle
mfg Ercan