Big und little endian

iceman1888

Neuling
Thread Starter
Mitglied seit
06.09.2009
Beiträge
66
Ort
Kiel
moin ich hab folgende aufgabe:

Schreiben Sie eine Funktion "is_little_endian()", die ermittelt welche Byte-Reihenfolge Ihr Rechner benutzt. Die Funktion soll 1 zurückgeben, wenn sie auf einer little endian Architektur übersetzt und ausgeführt wird, und 0 wenn sie auf einer big endian Architektur übersetzt und ausgeführt wird.

* Ihre Funktion sollte unabhängig von der verwendeten Wortlänge funktionieren.

so ich hab hier schonmal ein code aber ich weiß net wie ich das mit der wortlänge machen kann..

Code:
#include <stdio.h>


int main()
{
	int i = 0x1234578;

if ( *(char *)&i == 0x12 )
	
	printf("Bigendian\n");
	

else if ( *(char *)&i == 0x78 )
	
	printf("Littleendian\n");
    	
}
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ist doch relativ ok so. Ich habs mal so gemacht.. Basiert auf deinem Ansatz, aber den
direkt hab ich nicht ausprobiert, weil ich ihn doof fand.

Code:
int lend(void) {
    int i = 1;
    return *(char*)&i==1?1:0;
}

Die Funktion gibt auf x64 little-endian zurück, egal ob i int oder short (also 4 oder 2 bytes
lang ist).
Habe nun kein Big-endian System zum probieren, aber sollte eigentlich gehen, weil die
Adresse ja dann auf das "andere Ende" des Integers zeigt, wo keine 1 ist.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh