Javascript `atob ()` ve `btoa ()` neden böyle adlandırıldı?


266

JavaScript yılında window.atob()yöntemi deşifre base64 dize ve window.btoa()yöntem kodlar stringiçine base64 .

Öyleyse neden böyle adlandırılmış değildi base64Decode()ve base64Encode()? atob()ve btoa()hepsi de anlamsal değil, çünkü bir anlamı yok.

Sebebini bilmek istiyorum.


153
Bunun "A'dan B'ye" olduğunu fark etmemi yıllar aldı. Bunları hep "a-tob" ve "b-toa" olarak telaffuz ediyordum.
Ryan

5
@Ryan Sadece ben olmadığım için mutluyum!
TMH

1
Beni de say. Aynı şeyi düşündüm :-)
Super Coder

3
Nefsini benim isimlendirmemden çıkar.
AJB

1
kötü name, genellikle onlar gibi açık uzun bir isim kullanın getElementById,addEventListener
cieunteung

Yanıtlar:


164

atob()Ve btoa()yöntemler yazar ve base64 kodlama içerik dönüştürmeye izin verir.

Bu API'larda, anımsatıcı amaçlar için, "b" nin "ikili" ve "a" için "ASCII" anlamına geldiği düşünülebilir. Pratikte, esasen tarihsel nedenlerden dolayı, bu işlevlerin hem giriş hem de çıktıları Unicode dizeleridir.

Gönderen: http://www.w3.org/TR/html/webappapis.html#atob


82
Ama geri döndü. atob()ikiliyi ASCII'ye ve btoa()ASCII'yi ikiliye dönüştürür.
2540625

52
ascii base64 ve atobikiliye ascii. bunu her iki cevabın dışında bıraktılar. tersine çevrilemez
AKnox

13
Yani Stringöyle Binarymi?! Ve her zaman, ikili 0 ve 1 gibi bir şey olduğunu düşündüm. Bu çok güvenlidir!
Stefan Rein

6
@StefanRein Fikrinize katılıyorum. window.btoaargümanını ikili veri olarak okur ve kodlamak için 6 bitlik parçalara böler; bu doğru, bu yüzden adlandırma bir bakış açısından mantıklı. Ancak, aynı zamanda, window.btoasadece bir dize argümanı olarak alır ! :(
Константин Ван

5
K._ @> "Ancak, aynı zamanda, window.btoasadece alır dize bağımsız değişken olarak!" <Bu doğru ama buradaki dize sadece verinin bir temsilidir. Bir görüntüyü not defterinde açmaya çalışırsanız, dize olarak görüntülenir ancak yine de ikili verilerdir. btoaBaşlıca avantajı, dizenin hangi formatta olduğunu umursamaması, sadece ikili olarak ele almasıdır. Çoğu durumda bu dize normal bir dize olur.
laggingreflex

106

Zaten verilen cevapları özetlemek için:

  • atob anlamına gelir ASCII to binary
    • Örneğin: atob("ZXhhbXBsZSELCg==") == "example!^K"
  • btoa anlamına gelir binary to ASCII
    • Örneğin: btoa("\x01\x02\xfe\xff") == "AQL+/w=="

Neden bir SCII ve b inary :

  • ASCII(the a) base64kodlamanın sonucudur . Bir kasa sadece doğru temsil ve taşınabilen ASCII karakterlerden oluşan bir alt kümesi (*) oluşan metni (örn e-postanın gövde),
  • binary(the b), 0s ve 1s herhangi bir akıştır (javascript'te bir dize türüyle temsil edilmelidir).

(*) 'De base64: Bu sınırlıdır A-Z, a-z, 0-9, +, /ve =(dolgu, yalnızca sonunda) https://en.wikipedia.org/wiki/Base64

PS: Kendim itiraf etmeliyim ki başlangıçta isimlerle kafam karıştı ve isimlerin değiştiğini düşündüm. Ben " b ase64 kodlu dize" ve " bir ny dize" için bstand düşündüm : D.a


7
Bence temelde herkesin amacını kanıtladınız: base64 ASCII'nin bir alt kümesidir , bu nedenle çıktısının btoahala teknik olarak ASCII olduğunu iddia etseniz de, base64'i yalnızca giriş olarak kabul eden ad için bir gerekçe yokturatob .
devios1

1
'A' (ascii) 'yi base64 çıktısı olarak ve' b '(ikili) dize olan 0 ve 1 akışı olarak düşünmeye ve hatırlamaya yardımcı olur.
Talespin_Kit

86

Bunun eski olduğunu biliyorum, ama son zamanlarda Twitter'da ortaya çıktı ve ben otorite olarak paylaşacağımı düşündüm.

Ben mi:

@BrendanEich bu isimleri seçtin mi?

Him:

Eski Unix isimleri, man sayfalarını bulmak zor ama bkz. Https://www.unix.com/man-page/minix/1/btoa/… . Unix'ten Netscape kod tabanına taşınan adlar. Onları 1995'te büyük bir telaş içinde JS'ye yansıttım (Mayıs ayında on gün sonra ama yakında).

Minix bağlantısının kopması durumunda, man sayfası içeriği:

BTOA(1)                                           BTOA(1)

NAME
       btoa - binary to ascii conversion

SYNOPSIS
       btoa [-adhor] [infile] [outfile]

OPTIONS
       -a     Decode, rather than encode, the file

       -d     Extracts repair file from diagnosis file

       -h     Help menu is displayed giving the options

       -o     The obsolete algorithm is used for backward compatibility

       -r     Repair a damaged file

EXAMPLES
       btoa <a.out >a.btoa # Convert a.out to ASCII

       btoa -a <a.btoa >a.out
               # Reverse the above

DESCRIPTION
       Btoa  is  a  filter that converts a binary file to ascii for transmission over a telephone
       line.  If two file names are provided, the first in used for input and the second for out-
       put.   If  only one is provided, it is used as the input file.  The program is a function-
       ally similar alternative to uue/uud, but the encoding is completely different.  Since both
       of  these are widely used, both have been provided with MINIX.  The file is expanded about
       25 percent in the process.

SEE ALSO
       uue(1), uud(1).

Kaynak: JavaScript'in yaratıcısı Brendan Eich. https://twitter.com/BrendanEich/status/998618208725684224


5
Bu OP'nin sorusunun gerçek cevabı.
Ivan Filho

6

Şu anda bir kaynak bulamıyorum, ancak bu durumda b'nin 'ikili' ve a'nın 'ASCII' anlamına geldiği yaygın bir bilgidir.

Bu nedenle, işlevler aslında adlandırılır:

İçin İkili ASCII atob()ve için İkili ASCII btoa().

Bunun tarayıcı uygulaması olduğunu ve eski / geriye dönük uyumluluk amacıyla kaldığını unutmayın. Örneğin Node.js'de bunlar yoktur.


Düğüm olarak kullanmak Buffer.from("Hello World").toString('base64')&Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii')
nanoo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.