Dlaczego edytory szesnastkowe nazywane są edytorami binarnymi?


84

Szesnastkowy i dwójkowy to dwie różne podstawy. Hex, w moim rozumieniu, jest po prostu łatwiejszą w użyciu i wygodniejszą wersją pliku binarnego.

Jednak często słyszę, że edytory szesnastkowe są edytorami binarnymi. Jeśli szukasz „edytora binarnego” w Google, otrzymujesz edytory szesnastkowe.


3
Hex to dość czytelna reprezentacja danych binarnych.
Salman A

Odpowiedzi:


188

Edytor binarny edytuje plik jako plik binarny .

Plik binarny - Wikipedia

Plik binarny to plik komputerowy, który nie jest plikiem tekstowym. Termin „plik binarny” jest często używany jako termin oznaczający „plik nietekstowy” [i zwykle uważa się go za ciąg bajtów. ... Pliki binarne zwykle zawierają bajty, które mają być interpretowane jako coś innego niż znaki tekstowe.

Edytor hex jest rodzajem edytora binarnego , w którym dane są reprezentowane w szesnastkowym formacie liczbowym.

Edytor heksadecymalny - Wikipedia

Edytor hex (lub binarny edytor plików lub redaktor bajt ) to rodzaj programu komputerowego, który pozwala na manipulowanie fundamentalnej danych binarnych, który tworzy plik komputerowy. Nazwa „hex” pochodzi od „hexadecimal”: standardowa reprezentacja liczb, których podstawą jest 16.


85

Terminologia jest trudna. Różni ludzie mają różne nazwy dla różnych rzeczy.

W tym przypadku wydaje się, że hex w „edytorze szesnastkowym” odnosi się do konwencjonalnej reprezentacji wartości każdego bajtu w postaci czytelnej dla człowieka, podczas gdy binarny w „edytorze binarnym” odnosi się do pojęcia, że ​​rzeczywiście edytujesz plik po bajcie warstwa (i komputery przechowują bajty w formacie binarnym), bez uwzględnienia kodowania tekstu wyższego poziomu i tym podobnych. Przypomnij sobie, że pliki, które nie są łatwo reprezentowalne w formie tekstowej wyższego poziomu, nazywane są „plikami binarnymi” lub „plikami binarnymi” z tego samego powodu.

Żadne nie jest technicznie niepoprawne; po prostu przychodzą na problem nazewnictwa z różnych punktów widzenia. Osobiście jednak chciałbym zgodzić się, że „edytor binarny” jest mylący z punktu widzenia równowagi.


58

Wyświetlanie edytora binarnego (w trybie binarnym)

00000000 | 11111011 11111011 11111011 11111011 11110101 11111011 11111011 11111011
00001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00010000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00011000 | 11110101 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00100000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00101000 | 11111011 11111011 11101111 11111011 11111011 11111011 11111011 11111011
00110000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00111000 | 11111011 11111011 11111011 11101111 11111011 11111011 11111011 11111011
01000000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01010000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01011000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01100000 | 11111011 11111011 11111011 11111011 11111011 11101111 11111011 11111011
01101000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011

Wyświetlanie edytora binarnego (w systemie szesnastkowym)

00 | fb fb fb fb f5 fb fb fb fb fb fb fb fb fb fb fb
10 | fb fb fb fb fb fb fb fb f5 fb fb fb fb fb fb fb 
20 | fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb fb 
30 | fb fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb 
40 | fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb 
50 | ef fb fb fb fb fb fb fb ef fb fb fb fb fb fb fb 
60 | fb fb fb fb fb ef fb fb fb fb fb fb fb fb fb fb

Prawdą jest, że edytor binarny powinien umożliwiać obsługę bajtów w formacie binarnym, ale jak widać, podstawa 2 jest zbyt mała, aby podawać małe liczby.

Binarny jako surowy, nie bazowy dwa

Ogólnie rzecz biorąc, wtedy „ binarny ” w edytorze binarnym nie odnosi się do drugiej podstawy, w rzeczywistości jest antonimem „ edytora tekstowego ”.
Różnica polega na tym, że edytory tekstu są zaprojektowane do wyświetlania tekstu, więc nie trzeba bezpiecznie obchodzić się z drukowaniem znaków, nowych wierszy, znaków kontrolnych, nieprawidłowych jednostek kodu utf-8 i tak dalej.
Samo otwarcie pliku i natychmiastowe zapisanie może go zmienić (ze względu na wewnętrzne konwersje edytora, awarie).

W przeciwieństwie do edytorów binarnych, nie próbuj nadawać danych semantycznych i pozwól użytkownikowi bezpiecznie obsługiwać je jako strumień bajtów / bitów / słów.

Edytory szesnastkowe

Idealny edytor binarny znałby każdy możliwy format binarny i pozwalał na jego edycję, ale ponieważ każdy może stworzyć swój własny format binarny i ponieważ zmieniają się bardzo często, nie ma sensu próbować obsługiwać wszystkich formatów.
Najlepszą rzeczą, jaką edytor może zrobić, jest pokazanie samych bajtów, a ze względu na omówione już właściwości podstawy 16, liczby szesnastkowe są bardzo przydatne!

Również doświadczony użytkownik może mentalnie przetłumaczyć bin na hex podczas czytania.
Ustawienie / wyjście z bajtu zapisanego szesnastkowo zajmuje naprawdę absolutnie nie więcej wysiłku niż bajt zapisany w bin.
Szczerze mówiąc, znalazłem hex łatwiejszy do odczytania niż binarny.


1
Ładne przykłady pokazujące różnicę. Faktycznie ich oglądanie obok siebie sprawia, że ​​hex wygląda o wiele ładniej
DrZoo

1
@DrZoo Chyba że masz do czynienia z polami bitowymi, w takim przypadku reprezentacja binarna jest o wiele ładniejsza! en.wikipedia.org/wiki/Bit_field .
misha256

6
misha256: szczerze mówiąc, kiedy patrzę na hex - widzę binarny. Czytam „f”, ale mój mózg natychmiast mówi „1111”. To jak oglądanie matrycy w zwartej formie. :)
tdrury

4
+1 za podkreślenie „Binarny jako surowy, a nie drugi”
Kelvin

5
@tdrury dobry punkt, przypuszczam, że po chwili zaczniesz „widzieć” to, co musisz zobaczyć, bez względu na to, jak to jest wyrażone. Haha, tak, Matryca! Przypomina mi faceta, z którym chodziłem do szkoły, który z radością kodował język maszynowy w systemie szesnastkowym lub dziesiętnym i mógł swobodnie konwertować między nimi. Znał wszystkie kody operacyjne na pamięć i widział pola bitów i inne spakowane struktury danych, jakby to był jego pierwszy język. To były Commodore 64 dni (o wiele prostsze dni), ale wciąż imponujący talent.
misha256

15

Dlaczego edytory szesnastkowe nazywane są edytorami binarnymi?

Podsumowanie:

Edytor heksadecymalny służy do bezpośredniej edycji pliku binarnego poprzez wyświetlenie treści binarnej w formacie szesnastkowym i umożliwienie zmiany tych liczb szesnastkowych.

Uwagi:

  • Edytory szesnastkowe pozwalają na edycję surowej zawartości pliku, zamiast innych programów, które próbują interpretować dane.

  • Edytory szesnastkowe zwane również edytorami binarnymi lub edytorami bajtów.

  • Nazywanie ich edytorami binarnymi lub edytorami bajtów nie jest naprawdę poprawne, ponieważ redaktorzy zmieniają liczby szesnastkowe, a nie liczby binarne lub bajty (oczywiście podstawowe liczby binarne i bajty zmienią się, jeśli plik zostanie zapisany)

Dlaczego edytujemy użycie binarne w systemie szesnastkowym?

Łatwiej jest bezpośrednio przeglądać lub edytować / modyfikować pliki binarne, wyświetlając dane w postaci szesnastkowej i zmieniając wartości szesnastkowe.

  • Jednym z wygodnych sposobów przedstawiania liczb binarnych jest użycie systemu szesnastkowego.

  • Historycznie komputery były programowane w języku asemblera, w którym kod był zapisywany przy użyciu instrukcji procesora i meta-instrukcji (znanych jako dyrektywy, pseudo-instrukcje i pseudo-op), komentarzy i danych.

    • Kod jest tłumaczony na binarny za pomocą asemblera. Kod binarny można następnie załadować do procesu i wykonać.

    • Bez kodu źródłowego łatwiej jest modyfikować program bezpośrednio za pomocą edytora wyświetlającego program w systemie szesnastkowym, a nie binarnym.

  • Kod binarny jest łatwiejszy do odczytania przez ludzi po przekształceniu w system szesnastkowy.

    Na przykład, która para liczb jest łatwiejsza do zapamiętania lub odczytania komuś innemu?

    10110000 01100001
    

    Lub

    B0 61
    
  • Każda cyfra szesnastkowa reprezentuje cztery cyfry binarne (bity). Jedna cyfra szesnastkowa reprezentuje ciąg, który stanowi połowę oktetu lub bajtu (8 bitów).

    Na przykład wartości bajtów mogą mieścić się w zakresie od 0 do 255 (dziesiętnie), ale mogą być wygodniej reprezentowane jako dwie cyfry szesnastkowe w zakresie od 00 do FF.

  • Szesnastkowy jest również powszechnie używany do reprezentowania adresów pamięci komputera.


3
Zauważ też, że chociaż Baza 64 może wydawać się jeszcze łatwiejsza do zapamiętania, trzymamy się Hexa, ponieważ ma przyjemną właściwość odwzorowania 2 znaków ⇒ 1 bajt.
PythonNut

9

Zgodnie z kilkoma konwencjami dotyczącymi języka programowania i systemu operacyjnego istnieją dwa rodzaje plików:

  • pliki tekstowe, które składają się z zestawu linii tekstowych, przy czym każda linia składa się z zestawu znaków do wydrukowania (w tym niektórych znaków kontrolnych) i kończy się na końcu linii
  • pliki binarne zawierające dowolny zestaw bajtów, w tym bajt zerowy, który jest zabroniony w pliku tekstowym.

Edytory tekstowe mogą otwierać pliki tekstowe, podczas gdy edytory binarne nie mają ograniczeń co do rodzaju plików, które przetwarzają.

Fakt, że edytory binarne często reprezentują i pozwalają na wprowadzanie danych w systemie szesnastkowym, jest po prostu wygodą (często wyświetlają i umożliwiają również zastępowanie znaków ascii), tylko wyświetlanie danych w czystym formacie binarnym sprawi, że dane będą mniej czytelne.

Popularny edytor binarny nazywa się HexEdit .

wprowadź opis zdjęcia tutaj

Słusznie uważa się zarówno za edytor binarny, jak i edytor szesnastkowy:

wprowadź opis zdjęcia tutaj

Istnieje nawet opcja, aby nie wyświetlać danych w postaci szesnastkowej, a jedynie tekst

wprowadź opis zdjęcia tutaj


5

Pliki na zdecydowanej większości, jeśli wszystko, komputerów są dziś 8-bitowych bajtów . Zazwyczaj jest to abstrakcja, z którą pracuje się podczas bezpośredniej edycji pliku.

Oczywiście jest okazja, aby faktycznie edytować poszczególne fragmenty danych, ale nie często. Wspólne działania na poziomie nieco podobne ustawienie bitu 7 są łatwe do zrobienia z hex anyway - 1000 0000 base2 = 80 base16 , więc jeśli wartość hex jest pod 80 base2 bit 7 jest jasne i dodanie 8 base16 będzie to zmienić.

Inne powody, dla których hex jest silniej powiązany z tego rodzaju działalnością:

  • Wartości szesnastkowe są łatwiejsze do rozpoznania podczas wizualnego skanowania w poszukiwaniu znanych wartości. Na przykład 20 base16 = 32, która jest przestrzenią ASCII, ale ta sama wartość 0010 0000 base2 nie jest tak łatwa do rozpoznania wśród zalewu innych zrzuconych wartości.

  • Stare systemy, w których faktycznie trzeba było tego regularnie używać, mogły mieć ograniczone miejsce na ekranie (np. 40 kolumn). Monitor Apple IIe ROM jest świetnym przykładem, może zrzucić pamięć szesnastkową do 40-kolumnowego zintegrowanego wideo, a rozszerzenie wartości do wartości binarnych na ekranie 80x24 szybko zabraknie Ci miejsca. W przypadku tych starych systemów łatwiej jest również pisać procedury w celu konwersji wprowadzonych ASCII z powrotem na właściwe wartości. Ważne, gdy 4K pamięci RAM uznano za dużo pamięci, a systemy mogły mieć tylko tyle pamięci ROM.

  • Słowo „hex” brzmi lepiej, jest krótsze i łatwiejsze do wpisania.


5

Kiedy ludzie używają heksów, zwykle myślą dwójkowo i używają heksa jako zapisu skrótowego.

Szesnaście to potęga 2. Osiem to także potęga dwóch. Tak więc 16 i 8 zostały użyte do skróconego zapisu binarnego. Ręczna konwersja między wersją binarną i bazą pewnej potęgi dwóch jest łatwa. Po prostu zgrupuj bity razem w rozmiarze wskazanym przez bazę docelową, a następnie użyj odpowiedniej cyfry.

Baza 8, ósemkowa, była popularna na wielu wczesnych komputerach, dlatego Unix ma odpolecenie ósemkowego zrzutu. Każda cyfra ósemkowa reprezentuje 3 bity naraz. Ale było to niewygodne dla maszyn opartych na 8 bajtach.

Szesnastkowy, szesnastkowy w skrócie, podstawa 16, reprezentuje 4 bity na cyfrę. Obecnie jest to o wiele częściej stosowana reprezentacja.


3

Odnosi się to do sposobu przechowywania informacji przez komputery.

Na poziomie podstawowym komputery używają 0i 1do reprezentowania danych, nazywane są bitami. Osiem bitów zgrupowanych razem to bajt. Szesnastkowy jest podstawą 16, co oznacza, że ​​ma 16 znaków ( 0-9, A-F). Do zapisania znaku potrzeba 8 bitów lub 1 bajt.

Tak więc liczba szesnastkowa 13( 19dziesiętna) jest taka sama jak 0001 0011binarna. Łatwiej jest odczytać hex niż binarny.


2

Najwcześniejsze edytory binarne, jakie znam, były również deasemblerami. Oznacza to, że możliwość edycji była produktem ubocznym dezasemblacji i łatania wykonywalnego pliku binarnego.

Dobrym przykładem takiej aplikacji jest Hiew.

Kod złożony (instrukcje asemblera) jest często przedstawiany jako ciąg szesnastkowy. Myślę, że tutaj powstaje współczesne zamieszanie. Ludzie po prostu nie wiedzą, z czym mają do czynienia.


2

Każdy skompilowany plik, który można uruchomić (na przykład somefile.exe, na przykład w systemie Windows) jest czasami nazywany „binarnym”, ponieważ został skompilowany do kodu na poziomie maszyny, który jest poprawny na poziomie binarnym do bezpośredniego wykonania przez procesor.

Więc edytujesz plik binarny. Tak się składa, że ​​wyświetla się w heksie, ponieważ hex jest przydatny dla ludzi.


Tak, ale wiele plików danych jest również binarnych. Oszczędzają miejsce i tłumaczenie, gdy są odczytywane przez odpowiednią aplikację. Również pliki tekstowe są często szyfrowane lub kompresowane, co czyni je plikami binarnymi.
Joe

1

Odpowiem na twoje pytania dosłownie.

Najpierw trochę wyjaśnienia. Masz oczywiście na myśli edytor szesnastkowy. Heks oznacza 6 i dziesiętny oznacza 10 , tak szesnastkowym oznacza 16 . Bi oznacza 2 . Jak powiedziałeś, są to dwie różne podstawy, podstawa 16 i podstawa 2, co oznacza, że ​​potrzeba 16 elementów zastępczych, aby zdefiniować liczbę szesnastkową i tylko 2 elementy, aby zdefiniować liczbę binarną.

Ty to powiedziałeś,

If you actually search for "binary editor" on Google, you get hex editors.

A teraz pytania

Why is that? 

To jest dosłowna część. Google zwraca wyniki, które większość osób uważa za zadowalające wyniki wyszukiwania. Ich algorytmy uczenia maszynowego kojarzą ciągi „szesnastkowy” i „szesnastkowy” z „binarnym” w kontekście „edytora”. Ponieważ większość użytkowników była zadowolona z edytora „hex” po wyszukiwaniu „binarnego” „edytora”, otrzymujemy to. W przeciwnym razie nie ma to znaczenia.

What is the connection?

Dosłownie znowu nie ma, ponieważ Google nie zwraca znaczenia. Google nie zna różnicy między wersją binarną a szesnastkową, może jedynie zestawić sposób korzystania z wyszukiwarki przez użytkowników.

Jeśli pytałeś o rzeczywiste połączenie między szesnastkowym a binarnym, to wracając do mojego wyjaśnienia powyżej, jeden element szesnastkowy koduje 16 możliwości lub 4 bity, ale element binarny koduje 2 możliwości lub 1 bit. Aby zakodować 8 bitów informacji w bajcie, potrzebujemy 2 elementów szesnastkowych lub 8 elementów binarnych. Możesz więc zobaczyć, że edytory binarne lub szesnastkowe mogą być używane zamiennie, ponieważ reprezentują te same dane, tylko w różnych widokach.


1

Nazywa się je „binarnymi”, ponieważ pozwalają zmieniać poszczególne bity.

Interfejs użytkownika zwykle działa domyślnie w trybie szesnastkowym, ponieważ jest wygodniejszy - np. ffffe0007d13e650 Zajmuje mniej miejsca na ekranie niż 1111111111111111111000000000000001111101000100111110011001010000. (To jest rzeczywisty adres związany z problemem debugowania, a nie wymyślony przykład.) Łatwiej jest również „zobaczyć” rzeczy takie jak znaki ascii lub Unicode w kodzie szesnastkowym.

Ale większość z nich przełączy się na wyświetlanie binarnych bitów, jeśli naprawdę tego chcesz.

(Dlaczego jedziemy po parku, ale parkujemy na podjeździe? To tylko słowa. Angielski jest często dziwny.)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.