Il frame e' cosi' composto:
Codice: Seleziona tutto
+-------------------------------+
| 4 bit | 20 bit | 4 bit | 4bit |
+-------------------------------+
- Grazie

Codice: Seleziona tutto
+-------------------------------+
| 4 bit | 20 bit | 4 bit | 4bit |
+-------------------------------+


SuperStep ha scritto:trattando singolarmente alcuni bit
Codice: Seleziona tutto
n |= 1 << b setta bit b di n (b da 0 a 31)
n ^= 1 << b inverte bit b di n
n &= 0xFFFFFFFF ^ (1 << b) resetta bit b di n (con n lungo 32 bit)
ok, e se invece di trattare un bit alla volta, vorrei trattarli a gruppi di 4 o 20 (come nella separazione sopra)Claudio_F [url=http://forum.ubuntu-it.org/viewtopic.php?p=4954090#p4954090][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:SuperStep ha scritto:trattando singolarmente alcuni bitCodice: Seleziona tutto
n |= 1 << b setta bit b di n (b da 0 a 31) n ^= 1 << b inverte bit b di n n &= 0xFFFFFFFF ^ (1 << b) resetta bit b di n (con n lungo 32 bit)

Codice: Seleziona tutto
+-----------+-----------+-----------+-----------+
ba = | 0000 0000 | 0000 0000 | 0000 0000 | 0000 0000 |
+-----------+-----------+-----------+-----------+
^ ^ ^ ^ ^ ^ ^ ^
|__| |__________________________| |__| |__|
4 20 4 4
Codice: Seleziona tutto
ba[0] = (ba[0] & 0x0F) | (val << 4)Codice: Seleziona tutto
ba[0] = (ba[0] & 0xF0) | (val >> 16)
ba[1] = (val >> 8) & 0xFF
ba[2] = val & 0xFFCodice: Seleziona tutto
ba[3] = (ba[3] & 0x0F) | (val << 4)
ba[3] = (ba[3] & 0xF0) | valCodice: Seleziona tutto
ba[0] >> 4
((ba[0] & 0x0F) << 16) | (ba[1] << 8) | ba[2]
ba[3] >> 4
ba[3] & 0x0FVisualizzano questa sezione: 0 utenti iscritti e 5 ospiti