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 | 1229 (1031) | Andrej4 |
| » | [C] problem s kazalciOddelek: Programiranje | 1439 (1200) | BigWhale |
| » | [C#] unmanaged->managed codeOddelek: Programiranje | 2275 (2150) | Zzzzzzz |
| » | [NALOGA][C] fri-vsp - strukture (struct)Oddelek: Programiranje | 1690 (1531) | Vesoljc |
| » | Delo z omrezjem v linuxuOddelek: Programiranje | 1421 (1267) | CCfly |