gdb print reverse order. Miért?

 ( kiru | 2008. július 30., szerda - 17:56 )

Sziasztok!

Miért reverse order kiíratásnál (gdb) a változóm értéke (bináris)?
A control[fd].buf (char buf[1024]) változóban bináris adatok vannak. A 2-10. byteig található benne egy unix timestamp.

Namost az értéke "00 00 01 13 FC 20 8D FF".

Átmásolom buf-ból unsigned long long timestamp-ba:

memcpy(&control[fd].timestamp, (control[fd].buf+2), 8);

majd gdb-vel kiiratva:

---
522 memcpy(&control[fd].longitude, (control[fd].buf+10), 4);
(gdb) p control[fd].timestamp
$94 = 18414410718410506240
---
18414410718410506240 = FF8D20FC13010000 ami ugye pont a reverse order byteonként mint ami nekem kellene.

Miért van megfordítva? Vagy csak a gdb csinálja?
---
(gdb) p &control[fd].timestamp
$88 = (long long unsigned int *) 0xb799bf08
(gdb) dump binary memory /tmp/proba4.dump 0xb799bf08 0xb799bf08+8
---
Fileba kiírva stimmel és nincs megfordítva.
Szóval hogy van ez?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

keress ra "little endian"-ra, mondjuk wikipedian

köszi, ilyesmire gondoltam én is.