W JavaScript window.atob()
metoda dekoduje ciąg base64, a window.btoa()
metoda koduje string
do base64 .
Dlaczego więc nie nazwano ich jak base64Decode()
i base64Encode()
?
atob()
i btoa()
nie mają sensu, ponieważ wcale nie są semantyczne.
Chcę poznać przyczynę.
javascript
Константин Ван
źródło
źródło
name
, zwykle używają jasnych długich nazw, takich jakgetElementById
:addEventListener
Odpowiedzi:
atob()
Ibtoa()
metody pozwalają autorom przekształcić zawartości do iz kodowania base64.Od: http://www.w3.org/TR/html/webappapis.html#atob
źródło
atob()
konwertuje pliki binarne na ASCII ibtoa()
konwertuje ASCII na binarne.atob
jest ascii na binarny. w pewnym sensie zostawili to z obu odpowiedzi. więc nie jest odwróconeString
jestBinary
? I cały czas myślałem, że binarne to coś w rodzaju 0 i 1. To jest TAK WYGODNE!window.btoa
odczytaj jego argument jako dane binarne i podziel go na 6 kawałków, aby go zakodować; to prawda, więc nazewnictwo ma sens z punktu widzenia. Jednak równieżwindow.btoa
bierze jako argument tylko ciąg ! :(window.btoa
przyjmuje tylko ciąg znaków !” <To prawda, ale ciąg tutaj jest tylko reprezentacją danych. Na przykład, jeśli spróbujesz otworzyć obraz w notatniku, będzie on wyświetlany jako ciąg znaków, ale nadal będzie to dane binarne.btoa
Główną zaletą jest to, że nie ma znaczenia, w jakim formacie jest napis, lecz traktuje go jako binarny. Przypadkowe jest to, że w większości przypadków ten ciąg jest zwykłym ciągiem.Podsumowując już udzielone odpowiedzi:
atob
oznaczaASCII to binary
atob("ZXhhbXBsZSELCg==") == "example!^K"
btoa
oznaczabinary to ASCII
btoa("\x01\x02\xfe\xff") == "AQL+/w=="
Dlaczego SCII i b inary:
ASCII
(thea
) jest wynikiembase64
kodowania. Bezpieczny tekst złożony tylko z podzbioru znaków ASCII (*), które mogą być właściwie reprezentowane i transportowany (np korpus E-mail jest)binary
(b
) oznacza dowolny strumień zer i jedynek (w javascript musi być reprezentowany przez ciąg znaków).(*) W
base64
nich między innymi:A-Z
,a-z
,0-9
,+
,/
i=
(wyściółka, tylko na końcu) https://en.wikipedia.org/wiki/Base64PS Muszę przyznać, że sam byłem początkowo zdezorientowany przez nazewnictwo i myślałem, że imiona zostały zamienione. Myślałam, że
b
stojak na „ b ase64 zakodowanym ciągiem” ia
dla „ a ciąg NY” : D.źródło
btoa
są nadal technicznie ASCII, nie ma uzasadnienia dla nazwy,atob
która akceptuje tylko base64 jako dane wejściowe.Wiem, że to stare, ale ostatnio pojawiło się na Twitterze i pomyślałem, że podzielę się nim, ponieważ jest autorytatywny.
Mnie:
Mu:
W przypadku zerwania łącza Minix, oto treść strony man:
Źródło: Brendan Eich, twórca JavaScript. https://twitter.com/BrendanEich/status/998618208725684224
źródło
W tej chwili nie mogę zlokalizować źródła, ale powszechnie wiadomo, że w tym przypadku b oznacza „binarny”, a a „ASCII”.
Dlatego funkcje są w rzeczywistości nazywane:
ASCII na Binary for
atob()
i Binarny na ASCII forbtoa()
.Uwaga: jest to implementacja przeglądarki i została pozostawiona do celów zgodności z poprzednimi wersjami. Na przykład w Node.js nie istnieją.
źródło
Buffer.from("Hello World").toString('base64')
&Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii')