Forum » Programiranje » [C] bit order?
[C] bit order?
shock ::
Pozdravljeni,
Imam en težavo glede bit order-ja, kaj moram naredit sledeči kodi da mi izpiše rezultat "1"? Ko skompajlam sledečo kodo in zaženem program mi vrne rezultat "32".
Imam en težavo glede bit order-ja, kaj moram naredit sledeči kodi da mi izpiše rezultat "1"? Ko skompajlam sledečo kodo in zaženem program mi vrne rezultat "32".
struct tsHeader { unsigned ID1 : 3; unsigned ID2 : 13; }; int main(int argc, char *argv[]) { unsigned char recv_str[100]; recv_str[0] = 0x00; recv_str[1] = 0x01; struct tsHeader * tshdr; tshdr = malloc(sizeof(struct tsHeader)); tshdr = (struct tsHeader *) recv_str; printf("ID2 = %d\n", tshdr->ID2); } ############################# # gcc -o test test.c # ./test ID2 = 32
- spremenil: Mavrik ()
Vesoljc ::
struct tsHeader * tshdr;
tshdr = malloc(sizeof(struct tsHeader));
tshdr = (struct tsHeader *) recv_str;
kazalcu ki kaze na novo alocirano strukturo povozis vrednost z naslovom polja recv_str...
ce ze, naredi vsaj memcpy, vendar pa to na tak nacin ne bo delovalo, ker prevajalnik ne ve, da hoces zapisati tri bite v prvi del, 13 ostalih pa v drugi del... zgodi se pac blind copy
Abnormal behavior of abnormal brain makes me normal...
shock ::
Našel sem kje je problem. Problem je pri low in big endianu. Pri defeniranju strukture sem moral dodat "#if BYTE_ORDER == BIG_ENDIAN"
// Dajmo uporabljat st.koda tage no :) -- moderator
struct tsHeader { #if BYTE_ORDER == BIG_ENDIAN unsigned ID1 : 3; unsigned ID2_hi : 5; #else unsigned ID2_hi : 5; unsigned ID1 : 3; #endif unsigned ID2_lo : 8; };
// Dajmo uporabljat st.koda tage no :) -- moderator
Zgodovina sprememb…
- spremenil: Mavrik ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] malloc, sigsegvOddelek: Programiranje | 1051 (853) | Andrej4 |
» | [C] problem s kazalciOddelek: Programiranje | 1336 (1097) | BigWhale |
» | [C#] unmanaged->managed codeOddelek: Programiranje | 2142 (2017) | Zzzzzzz |
» | [NALOGA][C] fri-vsp - strukture (struct)Oddelek: Programiranje | 1552 (1393) | Vesoljc |
» | Delo z omrezjem v linuxuOddelek: Programiranje | 1296 (1142) | CCfly |