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?
- 830 megtekintés
Hozzászólások
keress ra "little endian"-ra, mondjuk wikipedian
- A hozzászóláshoz be kell jelentkezni
köszi, ilyesmire gondoltam én is.
- A hozzászóláshoz be kell jelentkezni