Słownik

Co oznacza kolejność bajtów?

Kolejność bajtów to jeden z ukrytych szczegółów, które znajdziesz w pliku, gdy sprawdzisz jego metadane. Dowiedz się, co oznacza i co mówi o tym, w jaki sposób Twój plik został zapisany.

byte-order

Kolejność bajtów, znana także jako endianness, opisuje sekwencję, w jakiej przechowywane są bajty większej wartości. Komputery mogą zapisywać te bajty, zaczynając od jednego albo drugiego końca, a plik musi wskazać, którego końca użył, aby wszystko, co go potem odczyta, otrzymało z powrotem tę samą liczbę.

Dwa porządki bajtów

Pojedynczy bajt jest jednoznaczny. Liczby zbyt duże na jeden bajt muszą zostać podzielone na kilka bajtów i to właśnie tutaj dwie konwencje się rozchodzą:

  • Big-endian: zapis lub wysyłanie zaczyna się od bajtu zawierającego najbardziej znaczące bity, a znaczenie maleje dalej
  • Little-endian: zapis lub wysyłanie zaczyna się od bajtu zawierającego najmniej znaczące bity, a znaczenie rośnie dalej

Weź liczbę 4660, która wymaga dwóch bajtów. Plik big-endian zapisuje je jako 12 34, a plik little-endian jako 34 12. Ta sama liczba, odwrotna kolejność. Istnieją też formy mieszane, opisywane jako mixed-endian lub middle-endian, ale są rzadkie. Obie główne kolejności są używane na co dzień, a to, którą zobaczysz, zależy od urządzenia lub programu, który utworzył plik.

Które pliki to zawierają

To pole jest najbardziej znane z formatu TIFF i wszystkiego, co jest zbudowane na strukturze TIFF, w tym bloku metadanych Exif wewnątrz zdjęć JPEG i surowych formatów z aparatów, takich jak NEF, CR2, ARW i DNG. Takie pliki zaczynają się od dwuliterowego znacznika: II dla Intela lub MM dla Motoroli, firm, których procesory spopularyzowały każdą z tych kolejności. Raport zazwyczaj zapisuje to jako Little-endian (Intel, II) lub Big-endian (Motorola, MM). Kolejność wybrał aparat, skaner lub program, który zapisał metadane.

Kontenery audio podjęły ten sam wybór na poziomie całego formatu: WAV zapisuje swoje wartości w kolejności little-endian, a AIFF w kolejności big-endian, co jest jednym z powodów, dla których dwa formaty zawierające dokładnie te same próbki dźwięku nie są zamienne bajt w bajt.

Dlaczego ma to znaczenie dla Twojego pliku

Kolejność bajtów jest powodem, dla którego metadane zapisane na jednej maszynie mogą wyglądać jak nonsens na innej. Odczyt, który ignoruje znacznik lub zakłada złą kolejność, nie kończy się grzeczną porażką: produkuje niemożliwe daty, absurdalne wartości ekspozycji i długości wychodzące poza koniec pliku albo po prostu ogłasza metadane jako nieczytelne. Znajomość kolejności mówi, jak plik można poprawnie otworzyć i przetworzyć.

Ma to podwójne znaczenie, jeśli edytujesz metadane, ponieważ nowe wartości muszą zostać zapisane z powrotem w kolejności zadeklarowanej przez plik. A jeśli sam ten znacznik zostanie uszkodzony, cały blok metadanych zwykle staje się nieczytelny, mimo że obraz lub dźwięk w pliku pozostają w pełni nienaruszone. To pole opisuje tylko sposób ułożenia pliku, więc nie zawiera żadnych osobistych informacji o tobie ani o twoim urządzeniu.