2009-06-18 20 views
5

Jestem trochę ciekawy, dlaczego ktoś chciałby użyć kodowania szesnastkowego nad base64. Wydaje mi się, że baza 64 jest bardziej wydajna. W szczególności, dlaczego bazy danych wydają się zawsze używać kodowania szesnastkowego? Czy jest to kwestia historyczna, czy też brakuje mi czegoś o kodowaniu szesnastkowym?Jaki jest cel kodowania szesnastkowego dla danych binarnych?

Odpowiedz

5

Musisz być prawdziwym geekem, aby przeczytać BASE64 na ekranie.

W Oracle, kiedy biegnę HEXTORAW mogę dostać jakiś pomysł co jest w polu RAW, ale nie mogłem z BASE64.

Gdy widzę mnóstwo 0x3F, wiem, że jest coś z kodowaniem.

I wewnętrznie są to tylko binarne bajty, nie ma potrzeby kodowania ich, ale pokazywania osobie po drugiej stronie ekranu.

+0

Konwersja tylko do base64, jeśli musisz wysłać gdzieś nad ASCII, aby ją odszyfrować z powrotem do pliku binarnego i użyć. –

0

Wyobrażam sobie, że twoja baza danych rzeczywiście zapisuje dane jako binarne, ale edytor zapytań pokaże je za pomocą kodowania szesnastkowego. Właśnie to zrobi SQL Server Query Analyzer.

0

Myślę, że to tylko kwestia osobistych preferencji ... Hex jest zdecydowanie łatwiej mi czytać potem coś w Base32 lub Base64

3

Jest to dobry kompromis między efektywnego wykorzystania przestrzeni i czytelności. Wzory bitów stają się bardzo widoczne na heksach, podczas gdy inne bazy nie są tak jasne.

który jest łatwiejszy do odczytania, 0x8080 lub 32896? Powiedziałbym, że wartość heksadecymalna jest.

Ma również ładną właściwość każdej cyfry heksadecymalnej równej skubli (dlatego każda para jest równa bajtowi).

Jest o wiele łatwiej zrozumieć sens hex w głowie niż podstawy 64.

Jeśli chodzi o bazy danych, a należy pamiętać, że istnieje różnica pomiędzy tym, jak dane są wyświetlane i jak jest on przechowywany. Najprawdopodobniej po prostu wyświetla dane w postaci heksadecymalnej.

2

Base64 nie działa, jeśli chcesz używać wartości wynikowych jako nazw plików w systemie Windows, ponieważ base64 używa zarówno wielkich, jak i małych liter. Jestem pewien, że są inne czasy, kiedy nie można ich użyć z podobnych powodów.

Zgadzam się z innymi odpowiedziami na temat czytelności - cyfry szesnastkowe dobrze pasują do 8-bitowych bajtów, podczas gdy base64 "cyfry" nie, a jedna cyfra może zawierać części dwóch bajtów.

+0

Trochę rogu, ale dobrym powodem, aby nie używać base64 tak samo. –

1

W przypadku przechowywania ciągów znaków (z "potencjalnie" bezpiecznym kodowaniem XML) można uzyskać jeszcze większą wydajność dzięki ASCII 85, ponieważ jest to wartość dodana 5/4 zamiast 4/3 dla base64.

Ale jeszcze trudniej jest "odczytać" niż base64. I niewiele aplikacji obsługuje to tak często, że musisz napisać własne klasy/funkcje do kodowania i dekodowania.