Base64, binary verileri ASCII karakterlere dönüştüren bir encoding yöntemidir. 64 karakter kullanır: A-Z, a-z, 0-9, +, / ve padding için = işareti.
Adım 1: Metni UTF-8 byte dizisine çevir
const encoder = new TextEncoder();
const utf8Bytes = encoder.encode("Merhaba");
// Sonuç: [77, 101, 114, 104, 97, 98, 97]
Adım 2: Byte dizisini binary string'e çevir
let binaryString = '';
for (let i = 0; i < utf8Bytes.length; i++) {
binaryString += String.fromCharCode(utf8Bytes[i]);
}
// "Merhaba" → binary string
Adım 3: Binary string'i Base64'e çevir
const encodedText = btoa(binaryString);
// "Merhaba" → "TWVyaGFiYQ=="
Nasıl Çalışır? Her 3 byte (24 bit) alınır, 4'er 6 bitlik gruplara bölünür. Her 6 bitlik grup Base64 karakterine çevrilir.
Adım 1: Base64 formatını kontrol et
// Sadece geçerli Base64 karakterleri: A-Z, a-z, 0-9, +, /, =
if (!/^[A-Za-z0-9+/]*={0,2}$/.test(text)) {
return 'Geçersiz format';
}
Adım 2: Padding kontrolü (Base64 string uzunluğu 4'ün katı olmalı)
const padding = base64Text.length % 4;
if (padding !== 0) {
base64Text += '='.repeat(4 - padding);
}
// "TWVyaGFiYQ" → "TWVyaGFiYQ=="
Adım 3: Base64'ü binary string'e çevir
const binaryString = atob("TWVyaGFiYQ==");
// Binary string'e çevrildi
Adım 4: Binary string'i UTF-8 byte dizisine çevir
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
Adım 5: UTF-8 byte dizisini metne çevir
const decoder = new TextDecoder('utf-8');
const decodedText = decoder.decode(bytes);
// "Merhaba"