Alıntı (zekeriyadurmus):
> int veri türünde 4 değeri 00 00 00 04 şeklinde saklanırken
short verit türünde 4 değeri 04 00 şeklinde saklanıyor.
Emin misin?
import std.stdio;
void main()
{
int i = 0x01020304;
baytlarınıGöster(i);
short s = 0x0102;
baytlarınıGöster(s);
}
void baytlarınıGöster(T)(ref T değişken)
{
const ubyte * baş = cast(ubyte*)&değişken;
writefln("tür : %s", T.stringof);
writefln("değer : %s", değişken);
writefln("adres : %s", baş);
writef( "baytlar: ");
writefln("%(%02x %)", baş[0 .. T.sizeof]);
writeln();
}
Benim Intel işlemcimdeki çıktısı:
'
tür : int
değer : 16909060
adres : 7FFF23B19538
baytlar: 04 03 02 01
tür : short
değer : 258
adres : 7FFF23B1953C
baytlar: 02 01
'
Alıntı:
> İleride bu tarz verilerin değişmeyeceğinin bir garantisi var mı ?
Teoride, programın ileride hangi soncul ortamda çalışacağını bilemezsin. Örneğin, gelecekteki zamanda int 01 04 03 02 diye bile saklanabilir. (Değeri yine de 0x01020304 olur). Pratikte, öyle şey hiçbir zaman olmayacak. :) Ya küçük soncul ya büyük soncul...
Alıntı:
> Bunlarla ilgili karmaşaya düşmemek için ne yapmak lazım?
std.bitmanip modülünde soncullukla ilgili işlevler var.
core.bitop içinde bayt değiş tokuş eden bswap var.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]