Teknik yardım

Base64 dosyaları neden büyütür?

Base64 ikili veriyi genellikle yaklaşık üçte bir büyütür. 3 bayttan 4 karaktere yapıyı, dolguyu, Data URL ek maliyetini ve bu boyutun ne zaman değdiğini görün.

Kısa yanıt

Base64 ikili veriyi genellikle yaklaşık üçte bir büyütür çünkü her 3 bayt ikili veriyi 4 yazdırılabilir Base64 karakteriyle temsil eder.

Girdi uzunluğu 3’ün tam katı değilse standart dolgulu Base64 = karakterleri ekleyebilir. Kodlanmış uzunluk 4 × ceil(n / 3)’tür; n özgün bayt uzunluğudur.

«Yaklaşık %33» büyük girdileri anlatır. Çok küçük girdilerde dolgu yüzünden yüzde çok daha büyük görünebilir. Base64 sıkıştırma değildir. Kodlama ile şifreleme için [Base64 şifreleme değildir: gerçekte ne yapar](/tr/story/base64-is-not-encryption) bakın.

Bu yazı Base64 çıktısının özgün baytlardan neden büyük olduğunu açıklar. Bir güvenlik kılavuzu değildir. Kodlama ile şifreleme gerekiyorsa Base64 şifreleme değildir: gerçekte ne yapar kullanın.

Base64 neden daha çok yer ister?

3 bayt 24 bittir. Base64 o 24 biti 6 bitten 4 gruba böler. Her grup bir Base64 karakterine eşlenir, böylece 3 girdi baytı 4 çıktı karakteri olur. ASCII karakter başına 1 bayt saklanırsa bu 4 / 3 ≈ 1.333’tür — yaklaşık %33.3 artış.

  • 3 bayt (24 bit)
  • 6 bitten 4 gruba böl
  • Her grup → bir Base64 karakteri
  • 4 karakter (çoğunlukla 4 bayt metin)
3 bayt → 4 karakter adımı boyut maliyetidir. Dolgu kısa girdilerde biraz daha ekleyebilir.

Yalın, denetlenebilir bir örnek

Bu kodlamalar standart dolgulu Base64 ile eşleşir.

Man

Man

Base64

TWFu

Man 3 UTF-8/ASCII bayttır. TWFu 4 karakterdir: 3 → 4.

Hello

Hello

Base64

SGVsbG8=

Hello 5 bayttır. SGVsbG8= bir = dahil 8 karakterdir. Küçük veride dolgu yüzdeyi %33’ten büyük gösterir.

Base64 boyutu nasıl hesaplanır?

Standart dolgulu Base64 için encodedLength = 4 × ceil(originalBytes / 3).

Özgün baytlar Base64 karakterleri
14
24
34
48
58
68

1 veya 2 bayt yine 4 karakter üretir. Sabit %33 değil, formülü kullanın.

«=» dolgusu ne anlama gelir?

= işareti son 3 baytlık bloğun dolmadığını gösterir. 1 girdi baytı iki = karakteri kullanır; 2 bayt birini; 3 bayt hiçbirini. Dolgu şifreleme veya güvenlik özelliği değildir.

Base64URL daha az yer mi kullanır?

Base64URL + işaretini - ve / işaretini _ yapar; Base64 kodla ve çöz kodlarken sondaki = karakterlerini atlar. Bu diziyi o = karakterleri kadar kısaltabilir. 3 bayt → 4 karakter yapısı aynı kalır, bu yüzden Base64URL daha yer tasarruflu bir ikili biçim değildir.

Çok küçük girdiler neden %33’ten fazla büyüyebilir?

1 bayt → 4 karakter uzunlukta %300 artıştır. 2 bayt → 4 %100’dür. 3 bayt → 4 yaklaşık %33.3’tür. n büyüdükçe dolgu daha az önem taşır ve ek yük yaklaşık %33’e yaklaşır. Base64 her zaman tam %33 büyük değildir.

Base64 Data URL neden daha da büyüktür?

Data URL yükün önüne data:image/png;base64, gibi bir önek ekler. Çok küçük bir dosyada o önek yüzdeye egemen olabilir. Base64 kodla ve çöz ham Base64 veya Data URL üretebilir; Data URL çıktısı standart abeceyi kullanır.

Base64 ile ikili: hangisi daha küçük?

Ham ikili taşıma ve depolamada daha yer tasarrufludur. Base64 daha büyüktür ama JSON, e-posta ve yalnızca metin yollarında metin olarak güvenlidir. İkiliden metne kodlamadır, sıkıştırma değil.

Base64 dosyaları sıkıştırır mı?

Hayır. Base64 bir sıkıştırma biçimi değildir. Kodlanmış metin genellikle özgün baytlardan büyüktür. O metne sonra gzip veya Brotli uygularsanız bazı tekrarlar küçülebilir—sonuç veriye ve sıkıştırıcıya bağlıdır. gzip Base64 ek yükünü tümüyle kaldırmaz.

Base64 gzip ile sıkıştırılırsa ne olur?

HTTP sıkıştırması Base64 metnindeki bazı yinelenen örüntüleri azaltabilir. JPEG, PNG veya ZIP ham bayt olarak da çoğu zaman kötü sıkışır ve Base64 sonra gzip hâlâ duruma bağlıdır. gzip sonrası evrensel bir ek yüzde yoktur.

Dosyaları Base64 olarak saklamalı mısınız?

Base64 ikiliyi bir JSON alanına, küçük satır içi varlığa, yalnızca metin API’sine, kopyala yapıştır’a veya Data URL’ye sığdırabilir. Büyük dosyalarda depolama, bellek ve yük boyutu hepsi büyür. Bu «dosyalar için asla Base64 kullanmayın» demek değildir.

JSON API’lerinde Base64 neden yaygındır?

JSON’un yerli ham ikili türü yoktur, bu yüzden API’ler baytları çoğu zaman bir Base64 dizisine koyar. Büyük dosyalar için multipart/form-data, nesne depolama veya doğrudan ikili yükleme daha iyi oturabilir. Hiçbir seçim her zaman en iyisi değildir.

E-postada Base64 neden kullanılır?

MIME, ikili ekin metin-güvenli karakterler olarak gitmesi için Base64 kullanabilir. Aynı boyut ek yükü yine geçerlidir. Bu bir taşıma gösterimidir, daha küçük bir dosya değil.

Ek boyut ne zaman değer?

Ek boyut, ikilinin metnin içinde durması gerektiğinde, yük küçükken, bir API Base64 istediğinde veya Data URL gerektiğinde değebilir. Büyük ortam için sistem izin veriyorsa ham ikiliyi yeğleyin.

Base64’ten ne zaman kaçınmalısınız?

Büyük dosyalar, dar bant genişliği, sık aktarım veya ikili yol zaten varken atlayın—duruma bağlı, «Base64 kötü uygulamadır» değil.

Denetleyebileceğiniz dolgulu Base64 uzunlukları

Özgün bayt sayıları ve standart dolgulu Base64 karakter sayıları:

Özgün baytlar Base64 karakterleri
14
24
34
1016
100136
1,0001,336

Tüm satırlar 4 × ceil(n / 3) izler. Bunlar Base64 karakter sayılarıdır.

Örnek: 1,000 baytlık bir dosya ne kadar büyük olur?

4 × ceil(1000 / 3). ceil(333.333…) = 334 ve 4 × 334 = 1336. Böylece 1,000 bayt 1,336 Base64 karakteri olur. UTF-8/ASCII olarak saklanırsa her karakter genellikle 1 bayttır—1,336’yı bellekte tam bayt sayısı sanmayın.

Base64 dosya boyutunun ima ettiğinden çok bellek kullanabilir mi?

Bazı çalışma ortamları dizileri karakter başına 1 bayttan fazla saklar; kodlama/çözme bir tampon ile bir diziyi birlikte tutabilir. Bellek kullanımı tam olarak karakter uzunluğu değildir.

Boyut için yalın bir karar kılavuzu

Sistem ham ikili kabul ediyorsa boyut için onu yeğleyin. Yalnızca metin izinliyse Base64 uyabilir. Büyük yükte ikili yükleme yolu arayın. URL-güvenli metin için Base64URL düşünün—3’ten 4’e genişleme kalır.

  • İkili veri göndermek gerekiyor
  • Ham ikili izinli mi? Boyut için ikiliyi yeğleyin
  • Yalnızca metin alanı mı? Base64 uygun olabilir
  • Büyük yük mü? İkili yükleme yolu bakın
  • URL-güvenli metin mi? Base64URL düşünün
  • Büyük girdilerde yaklaşık %33 daha çok metin bekleyin
Base64 metin uyumluluğu satın alır. Daha küçük dosya satın almaz.
Base64 yeri metin uyumluluğuyla takas eder

Base64 veriyi küçültmek için tasarlanmamıştır. İkiliyi metin tabanlı sistemlerin içinde göstermeyi kolaylaştırır; bedel ek boyuttur.

Tarayıcıda Base64 kodlayın veya çözün

NEXNARA Base64 kodla ve çöz metni kodlar ve çözer; bir dosyayı Base64 veya Data URL yapabilir ve Base64’ü dosyaya çevirebilir.

Metin UTF-8 baytları, sonra Base64 kullanır—yalnızca ASCII değil. Standard veya Base64URL seçin. Dosya çıktısı ham Base64 veya Data URL olabilir (standart abece). Geçersiz girdi reddedilir. UTF-8 olmayan baytlar Dosyaya gider, metin çözümü değil.

10 MB üstü dosyalar sekmeyi yavaşlatabilir (uyarı). 32 MB üstü dosyalar engellenir.

Kodlama ve çözme tarayıcınızda olur. Bu araç için dosya bir NEXNARA sunucusuna gönderilmez. Reklamlar ve diğer site özellikleri hâlâ ağı kullanır.

Base64 kodla ve çöz içine metin veya dosya yapıştırın ve özgün baytları kodlanmış uzunlukla karşılaştırın.

FAQ

Base64 dosya boyutunu neden artırır?

3 baytı (24 bit) 4 karaktere (4 × 6 bit) eşler. Metin olarak saklanırsa büyük girdilerde yaklaşık üçte bir fazladır.

Base64 her zaman %33 daha büyük müdür?

Hayır. Büyük girdiler yaklaşık %33.3’e yaklaşır. Çok küçük girdiler dolgu yüzünden daha çok büyüyebilir. 4 × ceil(n / 3) kullanın.

Base64 ikiliden ne kadar büyüktür?

Standart dolgulu uzunluk 4 × ceil(n / 3) karakterdir. Data URL öneki daha ekler.

Base64 sıkıştırması dosya boyutunu düşürür mü?

Base64 sıkıştırmaz. Kodlanmış metin üzerinde gzip veya Brotli bir kısmını küçültebilir; her durumda ek yükü silmezler.

Base64URL daha az yer mi kullanır?

= dolgusunu atabilir, böylece dizi 0–2 karakter kısa olabilir. 3’ten 4’e kodlama yapısı aynıdır.

Büyük dosyalar için Base64 kullanmalı mıyım?

Yalnızca metin gerekiyorsa. Büyük veya sık aktarımda ikili yol çoğu zaman daha küçüktür. API’ler için Base64 her zaman yanlış değildir.