Beh, la struttura in questione del buffer è un array di byte.
E' abbastanza semplice fare quello che vuoi sapendo che il buffer è così composto :
[#elementi][ELEMENTI : [ID blocco][#elementi blocco][elementi blocco] ]
Mi viene in mente qualcosa del genere:
Codice:
struct nodo_valori {
int numero_elementi;
unsigned char* valori;
struct nodo_valori* next;
};
typedef struct nodo_valori nodo_valori;
typedef nodo_valori* lista_valori;
lista_valori funzione(unsigned char* buffer)
{
lista_valori lista = NULL;
lista_valori* current_next = &lista;
int numero_elementi = buffer[0];
int elementi_estratti = 1;
int elementi_blocco = 0;
int id_blocco = 0
while (elementi_estratti < numero_elementi)
{
*current_next = (lista_valori) malloc(sizeof(nodo_valori));
id_blocco = buffer[elementi_estratti];
elementi_estratti++;
elementi_blocco = buffer[elementi_estratti];
elementi_estratti++;
*current_next->numero_elementi = elementi_blocco;
*current_next->valori = (unsigned char*) malloc(sizeof(unsigned char)*elementi_blocco);
*current_next->next = NULL;
memcpy(*current_next->valori, buffer+elementi_estratti, elementi_blocco);
elementi_estratti += elementi_blocco;
current_next = &(*current_next->next);
}
return lista;
}
Spero di aver capito quello che volevi e di non aver fatto errori grossolani visto che è un po' che non uso il C.
Ciao