Takip et

DataView ve Buffer ile İkili Verilerin İşlenmesi

DataView ve Buffer ile İkili Verilerin İşlenmesi

Merhaba! Fatih Soysal olarak, bugün JavaScript’te ikili verileri (binary data) nasıl ele alacağımızı, DataView ve Buffer nesnelerini kullanarak inceleyeceğiz. Bu nesneler, özellikle ağ programlama, dosya işlemleri ve oyun geliştirme gibi alanlarda oldukça önemlidir. Öncelikle, temel kavramları ele alarak ilerleyelim. Ardından, pratik örneklerle konuyu daha iyi anlayacağız.

Buffer Nedir?

Buffer, JavaScript’te ikili verileri saklamak için kullanılan bir veri yapısıdır. Bir dizi bayt (byte) olarak düşünülebilir. Buffer’lar, genellikle ağdan gelen verileri veya dosyalardan okunan verileri temsil eder. Buffer’lar, doğrudan bellekte saklandığı için, verimli bir şekilde ikili verileri işleyebilmemizi sağlar. Örneğin, bir resim dosyasını okuduğunuzda, dosyanın içeriği bir Buffer nesnesinde saklanır. Bu Buffer nesnesi daha sonra DataView ile işlenebilir.

DataView Nedir?

DataView, bir Buffer’daki verileri farklı veri tiplerinde (örneğin, integer, float, string) okumak ve yazmak için kullanılan bir nesnedir. Buffer, ham verileri tutarken, DataView bu veriler üzerinde daha üst düzey işlemler yapmamızı sağlar. DataView, belirli bir offset’ten (başlangıç konumu) başlayarak, belirli bir veri tipine göre verileri okur veya yazar. Bu sayede, Buffer’daki ham verileri anlamlı bir şekilde yorumlayabiliriz.

DataView ve Buffer ile Pratik Örnek

Şimdi, DataView ve Buffer’ı kullanarak bir örneği inceleyelim. Aşağıdaki kod, bir Buffer oluşturur ve bu Buffer’a farklı veri tiplerinde değerler yazar. Daha sonra, DataView kullanarak bu değerleri okur ve ekrana yazdırır:


const buffer = Buffer.alloc(16); // 16 baytlık bir Buffer oluşturur
const dataView = new DataView(buffer);

dataView.setInt32(0, 1234567890, true); // 32 bitlik bir tam sayı yazar (little-endian)
dataView.setFloat64(4, 3.14159265359); // 64 bitlik bir kayan noktalı sayı yazar
dataView.setInt8(12, 255); // 8 bitlik bir tam sayı yazar

console.log("getInt32:", dataView.getInt32(0, true)); // Değeri okur (little-endian)
console.log("getFloat64:", dataView.getFloat64(4));
console.log("getInt8:", dataView.getInt8(12)); 

Bu kodda, öncelikle 16 baytlık bir Buffer oluşturuyoruz. Sonrasında, bu Buffer’ı DataView nesnesi ile sarmalayarak, farklı veri tiplerinde değerleri yazabiliyor ve okuyabiliyoruz. setInt32, setFloat64, setInt8 gibi fonksiyonlar, verileri Buffer’a yazar. getInt32, getFloat64, getInt8 fonksiyonları ise verileri Buffer’dan okur. true argümanı, little-endian byte sıralamasını belirtir. Bu, sayının en az anlamlı baytından başlanarak yazıldığını gösterir.

Endianlık (Byte Sıralaması)

Endianlık, çok baytlı verilerin bellekte nasıl sıralandığını tanımlar. İki ana endianlık türü vardır: big-endian ve little-endian. Big-endian’da, en anlamlı bayt önce gelir. Little-endian’da ise en az anlamlı bayt önce gelir. DataView’de, endianlığı belirtmek için fonksiyonlara ek argümanlar ekleyebilirsiniz. Yanlış endianlık kullanımı, yanlış verilerin okunmasına neden olabilir.

Sonuç

DataView ve Buffer, JavaScript’te ikili verileri etkili bir şekilde işlemek için güçlü araçlardır. Bu nesneler, çeşitli uygulamalarda veriyi okumak, yazmak ve işlemek için kullanılabilir. Özellikle, ağ programlama, dosya işlemleri ve oyun geliştirme gibi alanlarda oldukça faydalıdırlar. Daha fazla bilgi için fatihsoysal.com sitesini ziyaret edebilirsiniz. Ayrıca konuyu daha ayrıntılı öğrenmek isteyenler için MDN DataView Dokümantasyonu ve Node.js Buffer Dokümantasyonu kaynaklarına göz atabilirler.

#Etiketler: DataView, Buffer, İkili Veri, Binary Data, JavaScript, Programlama, Ağ Programlama, Dosya İşlemleri, Byte, Endianlık, Big-Endian, Little-Endian, Veri İşleme, Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.