Metin - İkili (Binary) Çevirici
Metni ikiliye (8-bit UTF-8 byte) çevirin ve geri çevirin — her iki kutu da canlı ve iki yönlü.
1.123 görüntülenme
Nasıl Çalışır
Metin ikiliye karakter karakter değil, önce UTF-8'e kodlanıp sonra byte byte çevrilir. Bu fark önemlidir çünkü bir karakter her zaman tek bir byte'a sığmaz. ASCII bir karakter yazdığınızda (düz İngilizce harfler, rakamlar ve noktalama, 0-127 kod noktaları) bu tam olarak tek byte'a sığar; örneğin A tek bir 8-bit grup olur: 01000001. Ama Türkçe karakterlerin çoğu daha fazla yer ister. Türkçe büyük noktalı İ harfi (Unicode U+0130), UTF-8'de tek değil iki byte olarak kodlanır: 11000100 10110000 — iki ayrı 8-bit grup. Bir emoji, örneğin 😀 (U+1F600), dört byte gerektirir: 11110000 10011111 10011000 10000000. Bu araç tam olarak bu işlem hattını çalıştırır — metin → UTF-8 byte'ları → her byte için boşlukla ayrılmış bir 8-bit ikili grup — bu yüzden içinde "İ", "ğ" veya emoji geçen bir kelime, "her karakter bir byte" varsayımının öngöreceğinden gözle görülür daha fazla grup üretir.
Bu ekstra byte'lar rastgele değildir; herhangi bir UTF-8 farkında çözücünün (bu aracın çeviriyi tersten çalıştırırken yaptığı da dahil) tanıyabileceği sabit bir bit desenini izler. Çok baytlı bir dizinin ilk byte'ı, kaç byte'tan oluştuğunu haber veren bir dizi 1-bit ve ardından bir 0 ile başlar — 110xxxxx "toplam 2 byte" demektir, 1110xxxx "3 byte", 11110xxx "4 byte" demektir — onu izleyen her byte ise, yani devam-baytı, her zaman sabit 10xxxxxx önekiyle başlar. İ için 11000100 10110000'i okurken: çözücü 110'u (2-baytlık bir başlangıç byte'ı) görür, ardından 10 ile başlayan bir byte (tam olarak bir devam-baytı) gelir, dizinin tamamlandığını doğrular ve iki byte'ın kalan bitlerinden tek bir Unicode kod noktası olan U+0130'u yeniden oluşturur. Çok baytlı bir karakterin ortasındaki bozuk veya eksik bir byte'ın çözümlemeyi kırmasının nedeni de budur — devam-baytı öneki tutmazsa karakter yeniden birleştirilemez.
Bilinmesi Gerekenler
İkiliyi metne geri çevirmek aynı işlem hattını tersine çalıştırır: 8-bit gruplar sırayla okunur, her başlangıç byte'ının önekine bakılarak kaç devam-baytının ona ait olduğu belirlenir, tam UTF-8 byte dizileri olarak yeniden gruplanır, sonra karakterlere geri çözülür — bu sayede doğru üretilmiş bir ikili dizi her zaman orijinal metnin tam olarak aynısına döner, Türkçe karakterler ve emoji dahil, bir yaklaşıklık değil. Bu yalnızca buradaki ikilinin özellikle UTF-8 olmasından ötürü işler: farklı bir kodlamayla (UTF-16 veya ISO-8859-9/Windows-1254 gibi tek-baytlık bir Türkçe kodlama) üretilmiş ikili, aynı karakterler için farklı byte sayıları ve bit desenleri kullanır ve buraya yapıştırıldığında ya yanlış metne çözülür ya da tamamen başarısız olur — bu araç evrensel bir ikili-metin aracı değil, özellikle bir UTF-8 aracıdır. Çeviri tamamen tarayıcınızda, istemci tarafında çalıştığı için yazdığınız hiçbir metin veya ikili hiçbir yere gönderilmez.
Sıkça Sorulan Sorular
Neden bazı karakterler 8 bitten fazla üretiyor?
Metin önce UTF-8'e kodlanır. ASCII karakterler 1 byte (8 bit) tutar, ama Türkçe karakterler ve emoji 2-4 byte tutabilir — her byte kendi 8-bit grubuyla gösterilir, yani tek bir karakter meşru şekilde 16, 24 veya 32 bite genişleyebilir.
İ, ğ, ş gibi Türkçe karakterler neden tek yerine iki ikili grup gerektiriyor?
0-127 ASCII aralığının dışında kaldıkları için UTF-8 bunları 2-baytlık dizi olarak kodlar: 110xxxxx ile başlayan bir başlangıç byte'ı, ardından 10xxxxxx ile başlayan bir devam-baytı. Örneğin İ, 11000100 10110000'dir — tek bir karakteri temsil eden iki grup.
Emoji çevirebilir miyim, kaç bit gerekir?
Evet. Emojilerin çoğu Unicode'da yeterince yüksek bir konumda olduğu için tam 4-baytlık UTF-8 biçimine ihtiyaç duyar: 11110xxx ile başlayan bir başlangıç byte'ı, ardından her biri 10xxxxxx ile başlayan üç devam-baytı — tek bir emoji karakteri için toplam 32 bit.
İkili girdimde geçersiz gruplar varsa ne olur?
Gruplar tam olarak 8 karakterlik 0 ve 1'lerden oluşmalı, boşlukla ayrılmalı. Geçersiz veya eksik gruplar — ve geçerli bir başlangıç byte'ıyla uyuşmayan devam-baytları — çeviriyi bozmadan atlanır.
Bu araç UTF-8 dışındaki kodlamalarla çalışır mı?
Hayır, ve zaten böyle bir iddiası yok. UTF-16 ve eski tek-baytlık kodlamalar (Türkçe için ISO-8859-9 gibi) aynı karakterlere farklı byte sayıları ve bit desenleri atar. Bu kodlamalardan gelen ikili buradan doğru çözülmez — bu araç özellikle bir UTF-8 metin-ikili çeviricisidir.
Benzer Araçlar
Sorun Bildir
Metin - İkili (Binary) Çevirici
Yorumlar
Henüz yorum yok — ilk yorumu siz yazın!