Herkese Merhabalar bugün
Binary ---> Text
Text ---> Binary
Dönüşümlerini
Yani decode ve encode edebilmek için Python'da minik bir proje yapımını göstereceğim
Bunu birkaç hafta önce bir yabancı bir videodan öğrenmiştim fakat hangi kanal olduğunu hatırlayamadığım için açıklama vs. bırakamayacağım.
Konuya Başlamadan önce 2 tane fonksiyonu bilmemiz lazım;
1-)Ord() Fonksiyonu: ord fonksiyonu, herhangi bir char veri tipinde(tek harf) olan değişkenin/değerin ascii tablodaki onluk tabandaki karşılığını veriyor. Evet açıklaması bu şekilde fakat sadece kelimeler ile olunca kafanızda pek bir şey canlanmıyor olabilir
bende kelimelerden fazla bir şey anlamam ondan biraz daha basitleştirip görsel ekleyerek anlatmaya çalışacağım.
Öncellikle bir örnek ile başlayalım o örneği açıklayarak ilerleyeceğim.
Örnek:
dersek çıktımız 97 olacaktır.
Tamam da o 97 nereden geliyor diyorsanız gelin birlikte ASCII tablosuna bir göz atalım.
Eğer sağ üst tarafa bakarsanız a değerinin ASCII karşılığı 97 olduğunu görürsünüz yani örnekteki çıktımızın
sonucu 97 olma sebebi bu bundan bir sonraki aşama da bu sayıyı binarye çevireceğiz fakat bunu şimdi değil encode ve decode
işlemi yaparken göreceğiz. Şimdilik 2. Fonksiyonumuza geçelim.
-----------------------------------------------------------------------------
2-) Chr() Fonksiyonu: chr fonksiyonu, ord fonksiyonunun tam tersini yapıyor içerisine integer veri tipinde bir değer girildiğinde ascii tabloda karşılığı olan karakteri veriyor.
Eğer ord() fonksiyonunu anladıysanız bunu çok kolay bir şekilde anlayacaksınız çünkü bu chr() fonksiyonun tam tersi ord() fonksiyonun tam tersi şeklinde çalışıyor yani önce şifreyi veriyorsunuz o da yine aynı şekilde ascii tablosunda karşılık gelen değere bakıyor ve şifreyi çözüyor yine örnek verelim;
Örnek;
Çıktımızda "a" harfini verecektir.
Bunun nedeni artık biliyorsunuzdur muhtemelen çünkü yine yukarıdaki ASCII tablosuna bakarsanız
97'ye karşılık gelen harf "a" harfidir.
---------------------------------------------------------------
Öğrenmemiz gereken 2 fonksiyonu da öğrendiğimize göre
encode ve decode işlemine başlayabiliriz fakat bir sayı verip ASCII tablosunda karşılık gelen harf ile
şifreleme yapmayacağız bu çıkan sonucu bir de binary(ikili sayı sistemi)'ne çevireceğiz.
Encode - Decode İşlemi;
Encode İşlemi;
Burada kullandığım Comprehension kafanızı karıştırmış olabilir
ondan bir de normal kullanımı göstereceğim
Burada 3.satırda ki " ...(format(ord(c),"b")) " kısmında neden "b" kullandığımızı merak ediyorsunuzdur bunun nedeni
ASCII tablosunda girdiğimiz harfe denk gelen sayıyı binarye çevirmek için kullanıyoruz yani "b" = binary anlamına geliyor
eğer orada "b" kullanmasaydık bize direkt ASCII tablosunda karşılık gelen sayıyı yazdırıcaktı
NOT: Burada belki 2.satırda tırnak işareti atıp nedeni içini boş bıraktığımı merak edebilirsiniz.
bunun nedeni her harfe denk gelen ikili sistem(binary) de karşılık gelen sayı anlaşılsın diye boşluk bırakıyoruz.
Decode İşlemi;
Burada da önceki işlemin tersini yapıyoruz fakat burada 2.satırda int(c,2) şeklinde yapıyoruz
aslında burada neden 2 kullandığımızı bende tam olarak bilmiyorum yani bunu ben daha önceden ezbere yapmıştım ve sorgulamamıştım da. Bunun nedeni araştırıyorum ama şuan ki fikrim muhtemelen ikili sayı sisteminde çözdüğümüz belirtmek için
çünkü oradaki sayıyı 3,4,5.. şekliden artırırsak her seferinde sonucumuz değişiyor.
Bunun cevabını bulunca konumu tekrardan düzenlyeceğim
NOT: Burada da aynı şekilde belki 2.satırda ki sonda .split(" ") yapmamızın nedeni merak ediyor olabilirsiniz,
Yine aynı şekilde orada hepsini birleşik olarak algılayıp sonra decode ettiğimizde istemediğim sonuç veya hata almamak için
bu şekilde yapmamız gerekir.
Konum bu kadardı Umarım faydalı olmuştur...
Kolay ve kısa bir projeydi bu konuyu açmamın sebebi daha önceden kriptografi ile ilgili bir proje ile uğraşırken içerisinde binary decode ve encode kullanmam gerekti ve bulmam biraz zamanımı aldı açıkcası ve bu tür bilgileri de hem kaybetmeyeyim diye
hem de belki birilerinin işine yarar diye paylaşıyorum.
************************************************
ÖZEL TEŞEKKÜR @Helmsys
aynı zamanda eğer "Comprehensions" Kavramını öğrenmek isterseniz Helmsys Hocamın bu
Pythonda "Comprehensions" Kavramı, "lambda" ve "yield" Deyimleri
Konusuna bakabilirsiniz.
Binary ---> Text
Text ---> Binary
Dönüşümlerini
Yani decode ve encode edebilmek için Python'da minik bir proje yapımını göstereceğim
Bunu birkaç hafta önce bir yabancı bir videodan öğrenmiştim fakat hangi kanal olduğunu hatırlayamadığım için açıklama vs. bırakamayacağım.
Konuya Başlamadan önce 2 tane fonksiyonu bilmemiz lazım;
1-)Ord() Fonksiyonu: ord fonksiyonu, herhangi bir char veri tipinde(tek harf) olan değişkenin/değerin ascii tablodaki onluk tabandaki karşılığını veriyor. Evet açıklaması bu şekilde fakat sadece kelimeler ile olunca kafanızda pek bir şey canlanmıyor olabilir
bende kelimelerden fazla bir şey anlamam ondan biraz daha basitleştirip görsel ekleyerek anlatmaya çalışacağım.
Öncellikle bir örnek ile başlayalım o örneği açıklayarak ilerleyeceğim.
Örnek:
print(ord(a))
dersek çıktımız 97 olacaktır.
Tamam da o 97 nereden geliyor diyorsanız gelin birlikte ASCII tablosuna bir göz atalım.
Eğer sağ üst tarafa bakarsanız a değerinin ASCII karşılığı 97 olduğunu görürsünüz yani örnekteki çıktımızın
sonucu 97 olma sebebi bu bundan bir sonraki aşama da bu sayıyı binarye çevireceğiz fakat bunu şimdi değil encode ve decode
işlemi yaparken göreceğiz. Şimdilik 2. Fonksiyonumuza geçelim.
-----------------------------------------------------------------------------
2-) Chr() Fonksiyonu: chr fonksiyonu, ord fonksiyonunun tam tersini yapıyor içerisine integer veri tipinde bir değer girildiğinde ascii tabloda karşılığı olan karakteri veriyor.
Eğer ord() fonksiyonunu anladıysanız bunu çok kolay bir şekilde anlayacaksınız çünkü bu chr() fonksiyonun tam tersi ord() fonksiyonun tam tersi şeklinde çalışıyor yani önce şifreyi veriyorsunuz o da yine aynı şekilde ascii tablosunda karşılık gelen değere bakıyor ve şifreyi çözüyor yine örnek verelim;
Örnek;
print(chr(97))
Çıktımızda "a" harfini verecektir.
Bunun nedeni artık biliyorsunuzdur muhtemelen çünkü yine yukarıdaki ASCII tablosuna bakarsanız
97'ye karşılık gelen harf "a" harfidir.
---------------------------------------------------------------
Öğrenmemiz gereken 2 fonksiyonu da öğrendiğimize göre
encode ve decode işlemine başlayabiliriz fakat bir sayı verip ASCII tablosunda karşılık gelen harf ile
şifreleme yapmayacağız bu çıkan sonucu bir de binary(ikili sayı sistemi)'ne çevireceğiz.
Encode - Decode İşlemi;
Encode İşlemi;
Python:
mesaj = input("Şifreliyeceğiniz metini girin: ")
binary = " ".join(format(ord(c),"b") for c in mesaj)
print(binary)
Burada kullandığım Comprehension kafanızı karıştırmış olabilir
ondan bir de normal kullanımı göstereceğim
Python:
message = input("Şifreliyeceğiniz metini girin: ")
for c in message:
binary = "".join(format(ord(c),"b"))
print(binary)
Burada 3.satırda ki " ...(format(ord(c),"b")) " kısmında neden "b" kullandığımızı merak ediyorsunuzdur bunun nedeni
ASCII tablosunda girdiğimiz harfe denk gelen sayıyı binarye çevirmek için kullanıyoruz yani "b" = binary anlamına geliyor
eğer orada "b" kullanmasaydık bize direkt ASCII tablosunda karşılık gelen sayıyı yazdırıcaktı
NOT: Burada belki 2.satırda tırnak işareti atıp nedeni içini boş bıraktığımı merak edebilirsiniz.
bunun nedeni her harfe denk gelen ikili sistem(binary) de karşılık gelen sayı anlaşılsın diye boşluk bırakıyoruz.
Decode İşlemi;
Python:
sifreli_metin = input("Şifresini çözeceğiniz metin girin: ")
decode = "".join(chr(int(c,2)) for c in sifreli_metin.split(" "))
print(decode)
Burada da önceki işlemin tersini yapıyoruz fakat burada 2.satırda int(c,2) şeklinde yapıyoruz
aslında burada neden 2 kullandığımızı bende tam olarak bilmiyorum yani bunu ben daha önceden ezbere yapmıştım ve sorgulamamıştım da. Bunun nedeni araştırıyorum ama şuan ki fikrim muhtemelen ikili sayı sisteminde çözdüğümüz belirtmek için
çünkü oradaki sayıyı 3,4,5.. şekliden artırırsak her seferinde sonucumuz değişiyor.
Bunun cevabını bulunca konumu tekrardan düzenlyeceğim
NOT: Burada da aynı şekilde belki 2.satırda ki sonda .split(" ") yapmamızın nedeni merak ediyor olabilirsiniz,
Yine aynı şekilde orada hepsini birleşik olarak algılayıp sonra decode ettiğimizde istemediğim sonuç veya hata almamak için
bu şekilde yapmamız gerekir.
Konum bu kadardı Umarım faydalı olmuştur...
Kolay ve kısa bir projeydi bu konuyu açmamın sebebi daha önceden kriptografi ile ilgili bir proje ile uğraşırken içerisinde binary decode ve encode kullanmam gerekti ve bulmam biraz zamanımı aldı açıkcası ve bu tür bilgileri de hem kaybetmeyeyim diye
hem de belki birilerinin işine yarar diye paylaşıyorum.
************************************************
ÖZEL TEŞEKKÜR @Helmsys
aynı zamanda eğer "Comprehensions" Kavramını öğrenmek isterseniz Helmsys Hocamın bu
Pythonda "Comprehensions" Kavramı, "lambda" ve "yield" Deyimleri
Konusuna bakabilirsiniz.
Son düzenleme: