Anladığım kadarıyla data binary, Bunları memcpy ile kendi veri yapına alabilirsin.
struct Erdem
{
uint16 id;
int8 classInfo;
float collisionRadius;
int hitpoints;
}
int8* data;//Datayı networkden veya dosyadan okuduğunu varsayıyorum.
Erdem e;
memcpy( &e, data, sizeof(Erdem));
Bu networking'de çok yapılan bir şeydir. Örneğin Ethernet protokolünün header'ı sabit uzunlukda ve içerdiği türler sabittir. "memcpy" ile network'den alınan data direk hafızada kullanıcının veri yapılarına kopyalanır.
Eğer bir değişken iki tane altçizgiye sahipse bu derleyicinin tanımladığı bir değişkendir çok derinlere indiysen kodu incelerken o zaman görmüşsündür. Tabi "__" isimli değişkenleride kullanıcıda verebilir ama hem okunulmaz hemde derleyicinin isimleri ile karışabilieceğinden tavsiye edilmez.
Diğer INT16,INT32, uint32 gibi değişkenler derleyiciler veya bazen kütüphaneler(veya kullandığın projede kullanıcı tarafından) tarafından tanımlanmış tür tanımlarıdır. Bunların sebebi int,double gibi değişkenlerin boyutunun sistemden sisteme değişme olasılığıdır. Fakat bir değişken INT16 olarak tanımlanmışsa onun boyutunun 16 bit olması bekleriz. Böylece bir ara katman eklenip değişken boyutları genellenmiş olur.
Saygılar
Erdem
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]