1. Se hai studiato il formato del datagramma dovresti sapere meglio di me, che non lo conosco affatto, che la versione è codificata nei primi 4 bit del primo byte. Infatti raw(0) And &HF0, annulla gli ultimi quattro bit e lo shift verso destra sposta tutti i bit a destra di quattro posizioni. Quindi se raw(0) è bbbbaaaa, il risultato sarà codificato dai bit bbbb. In realtà usare l'and è inutile, perché i 4 bit vanno persi comunque.
2. Stessa storia di prima, ma ottiene gli ultimi quattro bit, e moltiplica il risultato per quattro. Ad esempio, se il primo byte è 0xA7 = 0b10100111, il numero di versione sarà 0b1010 = 10, mentre la lunghezza dell'header, in parole da 4 byte, sarà 0b0111 = 7 (ossia 28 byte).
3, 4. Come sopra.
5. Il codice che hai postato fa proprio quello che hai chiesto. Che problema c'è?
|