Da möchte ich dann auch noch kurz ein paar Erläuterungen hinzufügen / ergänzen (Da ja auch Filesysteme angesprochen wurden):
Endianness oder auf Deutsch Byte-Reihenfolge legt fest, in welcher Reihenfolge die Werte, die aus mehreren Bytes bestehen, geschrieben werden.
Little-Endian schreibt den kleinsten Wert zuerst, Big-Endian den größten.
Wenn man dies statt mit Bytes mit Ziffern des Zehnersystems darstellen würde, dann hätte man z.B. die Ziffern:
8,9
Bei Big-Endian kommt der größte Wert, hier der Zehner, zuerst, so dass die Ziffern 8,9 der Zahl Neunundachzig entspricht.
Bei Little-Endian kommt die kleinste Ziffer zuerst, d.h. zuerst würde die Einerstelle und dann die Zehnerstelle gebracht so dass wir bei der Zahl Achtundneunzig wären.
Die Unterscheidung zwischen diesen Systemen hat sich in erster Linie bei de Architekturen gezeigt. So sind z.B. x86, DEC Alpha, ... Little-Endian.
Big-Endian Beispiele wären IBM-Mainframe, MIPS, SPARC, 68k ... (Interessant: Alpha CPUs können auch in einem Big-Endian Modus laufen, was aber unüblich ist...)
Nun ist es so (wie es schon gesagt wurde), dass man beim schreiben einer Datei oder Streams (z.B. bei Netzwerktraffic) halt genau sagen muss, was man denn hier schreibt. Bei Dateisystemen war es in der Vergangenheit oft so, dass diese für eine Architektur / ein Betriebssystem geschrieben wurden. Und da wurde dann die Codierung der Architektur beibehalten. So wurde FAT speziell für x86 entwickelt, so dass hier Little-Endian verwendet wurde.
(Wichtig: Dies betrifft jetzt nicht Bytes, die in eine Datei geschrieben wurden sondern das Speichern von Werten innerhalb des Filesystems selbst (Siehe
https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system wenn der Aufbau des FAT Filesystems von Interesse ist!).
Diese historische Einschränkung gibt es aber nicht mehr. Es ist üblich, dass Dateisysteme Plattformübergreifend genutzt werde können. Daten werden auch Plattformübergreifend zwischen Geräten ausgetauscht (Netzwerk). Es ist üblich, hier Big-Endian zu nutzen. Aber das ist schlicht etwas, das "üblich" ist. Prinzipiell kann heutzutage natürlich jemand immer noch Daten so versenden oder speichern, wie er es für richtig hält.
==> Damit sind wir bei dem Thema Dateiformat oder Protokoll, mit dem Daten versendet / empfangen werden, was beliebig sein kann und was natürlich dokumentiert werden sollte.
Weitere Links:
-
https://de.wikipedia.org/wiki/Byte-Reihenfolge
-
https://www.quora.com/Why-is-Network-Byte-Order-Big-Endian