Arduino dilinde veri türlerinin birbiri arasında dönüştürmek için bir takım fonksiyonlar vardır. Örneğin integer türündeki veriyi byte türüne dönüştürmek için bu fonksiyonlardan yardım alabiliriz. Bu dersimizde bu fonksiyonların listesi ve açıklamaları verilmiştir.
Şimdi dilerseniz bu fonksiyonlara kısaca bir gözatalım;
Bu fonksiyonumuz kendisine gönderilen herhangi bir türdeki parametreyi byte türüne çevirir. Fonksiyonun geri dönüş değeri byte türündendir.
Sözdizimi: byte(x);
Örnek olarak integer türündeki 125 sayısını byte türüne dönüştürelim;
1 2 |
int sayi = 124; byte sayi2 = byte(124); |
Bilindiği üzere byte türü sayılar 8 bit yani 0 ile 255 arasındadır. Eğer byte türüne dönüştüreceğimiz sayımız 255 değerinden yukarıda olursa, fonksiyonumuz otomatik olarak sayının ilk 8 bitini alacaktır.
Örneğin int türü 1265 sayımızı byte türüne dönüştürelim;
1 2 3 4 5 |
int sayi = 1265; byte sayi2 = byte(sayi); // dönüştürme fonksiyonumuz ilk 8 bitini alaca // bu sebeple dönüştürme sonucu // sayımız 241 oldu. |
Char fonksiyonu herhangi bir türdeki veriyi char tütüne dönüştürmek için kullanılır. Fonksiyon herhangi bir türde parametre alır ve geriye char türü veri döndürür.
Sözdizimi: char(x);
Örnek olarak byte türü 96 sayımızı char türüne dönüştürelim;
1 2 |
byte sayi = 97; char sayi2 = char(sayi); |
yukarıdaki dönüşüm sonucu byte türü “97” sayımızı char türüne dönüştürdüğümüzde sayımız “a” harfine dönüştü. Çünkü ASCII “97” sayısının karakter değeri “a” harfidir. Buradan ASCII Karakter Numaralarını inceleyebilirsiniz.
float() fonksiyonu herhangi bir türdeki veriyi float türüne dönüştürmek için kullanılır.
Sözdizimi: float(x);
Örnek olarak int türündeki 477 sayısını float türüne dönüştürelim;
1 2 |
int sayi = 477; float sayi2 = float(sayi); |
Yukarıdaki örnekte sayi değişkeni olan “477” sayısı değeri float türüne dönüştürüldükten sonra “477.00” oldu. Bunun sebebi float türünün ondalıklı sayı türü olmasıdır.
Herhangi bir türdeki veri türünü int veri türüne dönüştürmek için kullanılır. Dönüştürülecek veri max. 16 bit veri olmalıdır. Eğer dönüştürülecek veri 16 bit üzerindeyse, dönüştürme sağlıklı olmaz.
Sözdizimi; int(x);
Örnek;
1 2 3 |
float deger = 16.95; // deger adında float değişken tanımladık ve 16.95 değerini atadık int yeniDeger = int(deger); // deger değişkenini int türüne dönüştürdük ve yeniDeger değişkenine atadık // yeniDeger değişkeni değeri 17 oldu |
Yukarıdaki örnekte float türü “deger” değişkenine 16.95 sayısını atadık. Ardından bu değişkeni int türüne dönüştürdük ve yeniDeger adlı değişkene atadık. 16.95 sayısı int türüne dönüştürdüğümüzde 17 oldu. Bunun sebebi int türünün tamsayı türü değerlerini hafızada tutabilmesidir. Ve programımız 16.95 ondalıklı sayıyı, kendine en yakın olan tamsayıya dönüştürdü.
Herhangi bir türdeki veriyi long veri türüne dönüştürmek için kullanılır.
Sözdizimi; long(x);
Örnek;
1 2 |
int sayi = 165; long sayi2 = long(sayi); |
Herhangi bir türdeki veriyi word veri türüne dönüştürmek için kullanılır. word veri türü 16 bit işaretsiz tamsayı değeri tutabilir.
Sözdizimi;
word(x);
word(h, l);
h: verinin en anlamlı (en soldaki) byte’ı
l: verinin en az anlamlı (en sağdaki) byte’ı
Örnek;
Örnek olarak int veri türünde bir değişkeni word veri türüne dönüştürelim;
1 2 |
int sayi = 159; word sayi2 = word(sayi); |
Bir diğer örnekte ise byte türündeki iki sayıyı birleştirip word türüne dönüştürelim;
1 2 3 4 5 6 7 8 9 |
byte sayi1 = 125; // binary 01111101 byte sayi2 = 153; // binary 10011001 word sayi3 = word(sayi1, sayi2); /* * sayi3 değişkenindeki yeni sayımız * decimal 32153 * binary 0111110110011001 */ |
Yukarıdaki örnekte iki adet byte türü sayıyı word türüne dönüştürdük. Dönüşüm sonucu sayi1 ile sayi2 değişkeninin değerlerini binary olarak yan yana yazarak yeni sayıyı oluşturdu.
Yani;
sayi1 = 125 = 01111101
sayi2 = 153 = 10011001
işlem = word(sayi1, sayi2); // Burada ilk parametre yani sayi1 en anlamlı byte
sayi3 = 32153 = 0111110110011001
Girdiğiniz bir sayının hexadecimal ve binary karşılığını bulmak için Sayı Dönüştürücü aracımızı deneyebilirsiniz.