Strumienie bajtów zawierają bajty. W podziale na to, co jest w rzeczywistości, jest to 8 bitów złożonych z 1 i 0. Gdyby reprezentował liczbę, byłaby to dowolna liczba od 0 do 255 (co mogę dodać, to nie przypadek, że 4 liczby w adresie IP zawsze mają zakres od 0 do 255). Strumienie bajtów są zwykle wyrafinowanymi interfejsami mającymi na celu ukrycie podstawowej tablicy bajtów służącej do przechowywania bufora kołowego (wypełniasz bufor i czekasz, aż ktoś go opróżni, po czym ponownie wypełnia bufor).
Co do cholery to reprezentuje? Może reprezentować plik tekstowy, obraz lub strumień wideo na żywo. To, co to jest, zależy całkowicie od kontekstu tego, kto to czyta. Reprezentacja heksadecymalna to kolejny sposób na powiedzenie tego samego, chociaż czasem wygodniej jest zarządzać bajtami pod względem ich reprezentacji szesnastkowej niż liczb, jednak jest to to samo.
Gdy odwołujesz się do danych surowych, zwykle masz na myśli dane bajtowe. Dane przychodzą bez znacznika „Jestem plikiem obrazu!” Zwykle masz do czynienia z surowymi danymi tylko wtedy, gdy tak naprawdę nie obchodzi Cię, co dane reprezentują ogólnie. Na przykład, jeśli chciałbym przekonwertować obraz na jego czarno-białą wersję, mógłbym powiedzieć, że czytam surowe dane obrazu i na każde 3 odczytane bajty (co w rzeczywistości byłoby reprezentacją koloru czerwonego, reprezentacją koloru zielonego i reprezentacją niebieski kolor), dodaj jego wartość liczbową i podziel przez 3, a następnie wpisz tę wartość 3 razy. Zasadniczo to, co bym zrobił, to uśrednienie wartości czerwonego, zielonego i niebieskiego piksela i utworzenie z niego piksela równoważnego szarości. Jednak mówiąc o wykonywaniu operacji na danych na poziomie „bajt po bajcie”, nie „
Lub być może chcesz zapisać plik w bazie danych, ale prosi on o wstawienie jego „surowych danych” do typu danych obiektów blob. Oznacza to po prostu konwersję danych pliku na tablicę dużych bajtów, którą baza danych może zrozumieć i zarządzać. Przekonasz się, że gdy pobierzesz tę wartość z bazy danych, będzie to po prostu jedna wielka tablica bajtów, tak jak początkowo dostarczyłeś bazę danych na początek. Jeśli te dane były plikiem, to ty, programista, musisz ponownie zinterpretować te bajty, tak jakbyś czytał plik po jednym bajcie.
Gdyby ktoś poprosił cię o „odwrócenie danych 4-bajtowych”, założyłbym, że odnosi się to do interpretacji liczb big-endian vs. little-endian, która zapisuje liczby zaczynające się od najbardziej lub najmniej znaczącego bajtu. Nie ma znaczenia, czy liczba jest reprezentowana jako big-endian czy little-endian, tyle że wszystkie systemy odczytujące liczbę konsekwentnie ją interpretują.
Nie oznacza to, że rzeczywista reprezentacja liczb (lub reprezentacja szesnastkowa w tym przypadku) została zmieniona, po prostu kolejność, w jakiej te 4 bajty tworzą liczbę, powinna zostać odwrócona. Powiedzmy, że masz 0x01, 0x02, 0x03 i 0x04. Aby je odwrócić, miałbyś zamiast tego 0x04, 0x03, 0x02, 0x01. System prawdopodobnie odczytałby te 4 bajty w odwrotnej kolejności, a ponieważ już to odwróciłeś, wartość jest interpretowana jako taka sama, jak zamierzona w surowych danych.
Mam nadzieję, że to wyjaśnia!