Ruby/ASCII
Bize göre "Hello world
" gibi bir string bir kısım harfler ve ortasında bir boşluk olarak görünüyor. Bilgisayarınıza göre ise her String – gerçekte herşey – bir sayılar serisidir.
ASCII
[düzenle]Örneğimizde, "Hello world
" string'inin her karakteri 0'dan 127'ye kadar olan bir sayı ile ifade edilir. Örneğin bilgisayarınıza göre büyük harf "H
" 72 sayısıyla, boşluk ise 32 sayısıyla kodlanır, bu kodlamaya encoding. ASCII standardı orjinalinde telgraf üzerinden yazı göndermek için tasarlandı ve her hangi sayının hangi karaktere karşı geldiğini bildiriyor.
Birçok Unix-benzeri işletim sisteminde tüm ASCII kodlarını terminalde "man ascii
" komutu girerek görebilirsiniz. Wikipedia'nın ASCII sayfasında da ASCII kodlarının listesini görebilirsiniz. ASCII listesini kullanarak bizim "Hello world
" string'imizin aşağıdaki ASCII kodlara dönüştürüldüğünü anlayabiliriz.
H e l l o space w o r l d 72 101 108 108 111 32 119 111 114 108 100
Ayrıca Ruby 1.8 ve öncesinde bir karakterin ASCII kodunu?
operatörü kullanarak görebilirsiniz.
puts ?H puts ?e puts ?l puts ?l puts ?o
Soru işareti operatörü Ruby 1.9'dan itibaren çalışmaz. Yerine ord metodu kullanılır.
puts "H".ord puts "e".ord puts "l".ord puts "l".ord puts "o".ord
Aşağıdaki program çıktısına bakınca "Hello world
" string'inin "Hello
" parçasının ASCII kodları görünür.
$ ruby ascii.rb 72 101 108 108 111
Space karakterinin ASCII kodunu almak için escape sequence karşılığını girmeliyiz. Gerçekte ?
operatörü ile herhangi bir escape sequence ifadesi kullanabiliriz.
puts ?\s puts ?\t puts ?\b puts ?\a
Ama bu kodu Ruby >= 1.9 üzerinde çalıştırmak için
puts "\s".ord
puts "\t".ord
puts "\b".ord
puts "\a".ord
kullanılır. The sonuç:
32 9 8 7
Terminal emülatörleri
[düzenle]Farkında olmayabilirsiniz ama şimdiye kadar Ruby programlarınızı terminal emülatörü adı verilen bir programın içinde çalıştırıyordunuz – Microsoft Windows'ta konsol, Mac OS X'te Terminal uygulaması, bir telnet client'da rxvt, veya X Window Sistem'de xterm gibi programlarda.
Ruby programınız "H
" harfini yazmaya kalktığında "H
" karakterinin ASCII kodunu (72) terminal emülatöre gönderir, ve emülatör de ekrana "H
" çizer. Ruby programınız bir bell karakteri yazmaya kalktığında terminal emülatöre başka bir ASCII kodu yollar – ASCII kod 7. Bu durumda terminal emülatör ekrana bir harf çizmez, bunun yerine ya beep sesi çıkarır ya da kısa bir süre flaş çakar. Her kodun nasıl işleneceği genellikle ASCII standardı tarafından belirlenir.
Diğer karakter kodlamaları
[düzenle]ASCII standardı bir çeşit karakter kodlamasıdır. Yukarıda belirtildiği üzere ASCII standardı karakterler için sadece 0'dan 127'ya kadar sayıları kullanır. İlk icat edenlere bu kadarı yetmiş, ancak dünyada çok daha fazla karakterler kullanılıyor. Diğer karakter kodlama sistemleri – örneğin Latin-1, Shift_JIS, ve Unicode Transformation Format (UTF) – üretilerek Arapça, İbranice, Çince, ve Japonca gibi dillerde bulunan bir sürü karakter ifade edilebildi.
ASCII tablosu
[düzenle]
|
|
|